lindera_dictionary/loader/
prefix_dictionary.rs1use std::path::Path;
2
3use crate::LinderaResult;
4use crate::dictionary::prefix_dictionary::PrefixDictionary;
5#[cfg(feature = "mmap")]
6use crate::util::mmap_file;
7use crate::util::read_file;
8
9pub struct PrefixDictionaryLoader {}
11
12impl PrefixDictionaryLoader {
13 pub fn load(input_dir: &Path) -> LinderaResult<PrefixDictionary> {
26 let trie_data = read_file(input_dir.join("dict.trie").as_path())?;
27 let vals_idx = read_file(input_dir.join("dict.valsidx").as_path())?;
28 let vals_data = read_file(input_dir.join("dict.vals").as_path())?;
29 let words_idx_data = read_file(input_dir.join("dict.wordsidx").as_path())?;
30 let words_data = read_file(input_dir.join("dict.words").as_path())?;
31
32 PrefixDictionary::load(trie_data, vals_idx, vals_data, words_idx_data, words_data)
33 }
34
35 #[cfg(feature = "mmap")]
50 pub fn load_mmap(input_dir: &Path) -> LinderaResult<PrefixDictionary> {
51 let trie_data = mmap_file(input_dir.join("dict.trie").as_path())?;
52 let vals_idx = mmap_file(input_dir.join("dict.valsidx").as_path())?;
53 let vals_data = mmap_file(input_dir.join("dict.vals").as_path())?;
54 let words_idx_data = mmap_file(input_dir.join("dict.wordsidx").as_path())?;
55 let words_data = mmap_file(input_dir.join("dict.words").as_path())?;
56
57 PrefixDictionary::load(trie_data, vals_idx, vals_data, words_idx_data, words_data)
58 }
59}