Crates.io | darts |
lib.rs | darts |
version | 0.1.0 |
source | src |
created_at | 2019-06-25 10:44:57.953505 |
updated_at | 2019-06-25 10:44:57.953505 |
description | A double array trie, A Forward Maximum Matching Searcher. |
homepage | |
repository | https://github.com/andelf/rust-darts |
max_upload_size | |
id | 143439 |
size | 28,137 |
This library is in alpha state, PRs are welcomed. An optional Forward Maximum Matching Searcher is provided when enabled by features.
Add it to your Cargo.toml
:
[dependencies]
darts = "0.1"
then you are good to go. If you are using Rust 2015 you have to extern crate darts
to your crate root as well.
use std::fs::File;
use darts::DoubleArrayTrie;
fn main() {
let mut f = File::open("./priv/dict.big.bincode").unwrap();
let da = DoubleArrayTrie::load(&mut f).unwrap();
let string = "中华人民共和国";
let prefixes = da.common_prefix_search(string).map(|matches| {
matches
.iter()
.map(|(end_idx, v)| {
&string[..end_idx]
})
.collect();
}).unwrap_or(vec![]);
assert_eq!(vec!["中", "中华", "中华人民", "中华人民共和国"], prefixes);
}
use std::fs::File;
use darts::DoubleArrayTrie;
fn main() {
let mut f = File::open("./priv/dict.big.bincode").unwrap();
let da = DoubleArrayTrie::load(&mut f).unwrap();
assert!(da.exact_match_search("东湖高新技术开发区").is_some());
}
searcher
feature enables searcher for maximum forward matcherserialization
feature enables saving and loading serialized DoubleArrayTrie
data[dependencies]
darts = { version = "0.1", features = ["searcher", "serialization"] }
# It would take minutes, be patient.
time cargo test -- --nocapture --ignored test_dat_basic
cargo bench --all-features
This work is released under the MIT license. A copy of the license is provided in the LICENSE file.