use std::path::Path;
use crate::LinderaResult;
use crate::dictionary::prefix_dictionary::PrefixDictionary;
#[cfg(feature = "mmap")]
use crate::util::mmap_file;
use crate::util::read_file;
pub struct PrefixDictionaryLoader {}
impl PrefixDictionaryLoader {
pub fn load(input_dir: &Path) -> LinderaResult<PrefixDictionary> {
let da_data = read_file(input_dir.join("dict.da").as_path())?;
let vals_data = read_file(input_dir.join("dict.vals").as_path())?;
let words_idx_data = read_file(input_dir.join("dict.wordsidx").as_path())?;
let words_data = read_file(input_dir.join("dict.words").as_path())?;
Ok(PrefixDictionary::load(
da_data,
vals_data,
words_idx_data,
words_data,
true,
))
}
#[cfg(feature = "mmap")]
pub fn load_mmap(input_dir: &Path) -> LinderaResult<PrefixDictionary> {
let da_data = mmap_file(input_dir.join("dict.da").as_path())?;
let vals_data = mmap_file(input_dir.join("dict.vals").as_path())?;
let words_idx_data = mmap_file(input_dir.join("dict.wordsidx").as_path())?;
let words_data = mmap_file(input_dir.join("dict.words").as_path())?;
Ok(PrefixDictionary::load(
da_data,
vals_data,
words_idx_data,
words_data,
true,
))
}
}