#trie #search #string-search #string #text #darts #text-search

rust-cedar

在 Rust 中高效可更新的双数组 trie(从 cedar 转移而来)

1 个不稳定版本

0.1.0 2019年7月10日

文本处理 中排名第 1632

MIT 许可证

37KB
821 行(不包括注释)

rust-cedar

在 Rust 中高效可更新的双数组 trie(从 cedar 转移而来)。此库仍处于 alpha 版,欢迎反馈。

Build Status codecov

安装

将其添加到您的 Cargo.toml

[dependencies]
cedar = "0.1"

然后您就可以使用了。如果您使用的是 Rust 2015,您还必须在 crate 根目录下添加 extern crate darts

示例

let dict = vec![
    "a",
    "ab",
    "abc",
    "アルゴリズム",
    "データ",
    "構造",
    "",
    "网球",
    "网球拍",
    "",
    "中华",
    "中华人民",
    "中华人民共和国",
];
let key_values: Vec<(&str, i32)> = dict.into_iter().enumerate().map(|(k, s)| (s, k as i32)).collect();
let mut cedar = Cedar::new();
cedar.build(&key_values);

let result: Vec<i32> = cedar.common_prefix_search("abcdefg").iter().map(|x| x.0).collect();
assert_eq!(vec![0, 1, 2], result);

let result: Vec<i32> = cedar
    .common_prefix_search("网球拍卖会")
    .iter()
    .map(|x| x.0)
    .collect();
assert_eq!(vec![6, 7, 8], result);

let result: Vec<i32> = cedar
    .common_prefix_search("中华人民共和国")
    .iter()
    .map(|x| x.0)
    .collect();
assert_eq!(vec![9, 10, 11, 12], result);

let result: Vec<i32> = cedar
    .common_prefix_search("データ構造とアルゴリズム")
    .iter()
    .map(|x| x.0)
    .collect();
assert_eq!(vec![4], result);

运行基准测试

cargo bench 

许可证

此作品根据 BSD-2 许可证发布,遵循 C++ cedar 的原始许可证。许可证副本包含在 LICENSE 文件中。

参考

无运行时依赖