5个版本
0.1.4 | 2023年7月9日 |
---|---|
0.1.3 | 2023年7月9日 |
0.1.2 | 2023年7月8日 |
0.1.1 | 2023年7月7日 |
0.1.0 | 2023年7月7日 |
#1806 in 数据结构
45KB
729 行
SuggestionTrie
一个用于建议搜索的Radix字典树,它允许快速搜索由一组关键词索引的数据。
- 默认为压缩字典树,对于稀疏字典树更节省内存
- 它支持简单的模糊搜索以修复搜索中的错误。
- 可定制的建议数据,您可以添加与单词或一组单词相关联的任何内容。
- 非模糊建议检索在微秒到纳秒之间,甚至对于数百万条记录也是如此。
示例
建议字典树的一种常见用法是查找与一组单词相关联的数据,如单词、文档、可执行文件等;
在具有+256M条记录的列表中搜索一个单词(在这个示例中是密码),在微秒内完成。
您可以将自定义数据添加到索引建议中,如文件路径、日期、散列等。
用法
Cargo.toml
suggestion_trie = "^0.1"
代码示例
use suggestion_trie::{TrieRoot, TrieInputData};
use suggestion_trie::Suggestion;
let mut trie_root: TrieRoot<i32> = TrieRoot::<i32>::new(5, Some(100));
// Get the data you want to insert into the trie
let entries = vec![
// Use lowercase keywords and query if you want to do case insensitive searches
TrieInputData {
suggestion: Suggestion::new("Rat".to_string(), Some(4)),
keywords: vec!["Mice".to_string(), "Rat".to_string(), "Mouse".to_string(), "Rodent".to_string()],
},
TrieInputData {
suggestion: Suggestion::new("Cat".to_string(), Some(8000)),
keywords: vec!["Cat".to_string(), "Kitten".to_string(), "Kitty".to_string()],
}
];
// Build the trie
trie_root.build(&entries);
// Search and get results
let results = trie_root.get_suggestions("Rodent");
assert_eq!(results.unwrap()[0].title, "Rat");
文档
请在此处查看文档 here
依赖关系
~2MB
~30K SLoC