1 个不稳定版本
0.1.0 | 2019年6月25日 |
---|
#1399 在 文本处理
27KB
505 行
rust-darts:双数组Trie的Rust实现。
此库处于alpha状态,欢迎提交PR。当启用功能时,提供可选的前向最大匹配搜索器。
安装
将其添加到您的 Cargo.toml
[dependencies]
darts = "0.1"
然后您就可以使用了。如果您使用的是Rust 2015,您还需要将 extern crate darts
添加到您的crate根目录。
示例
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
特性启用最大前向匹配搜索器serialization
特性启用保存和加载序列化的DoubleArrayTrie
数据
[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
许可证
此作品根据MIT许可证发布。许可证副本在LICENSE文件中提供。
参考
依赖关系
~235KB