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 trie_data = read_file(input_dir.join("dict.trie").as_path())?;
let vals_idx = read_file(input_dir.join("dict.valsidx").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())?;
PrefixDictionary::load(trie_data, vals_idx, vals_data, words_idx_data, words_data)
}
#[cfg(feature = "mmap")]
pub fn load_mmap(input_dir: &Path) -> LinderaResult<PrefixDictionary> {
let trie_data = mmap_file(input_dir.join("dict.trie").as_path())?;
let vals_idx = mmap_file(input_dir.join("dict.valsidx").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())?;
PrefixDictionary::load(trie_data, vals_idx, vals_data, words_idx_data, words_data)
}
}