1 个不稳定版本

0.1.0 2019年6月25日

#1399文本处理

MIT 许可证

27KB
505

rust-darts:双数组Trie的Rust实现。

此库处于alpha状态,欢迎提交PR。当启用功能时,提供可选的前向最大匹配搜索器。

Build Status codecov Crates.io docs.rs

安装

将其添加到您的 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