#建议 #字典树 #搜索

nightly suggestion_trie

一个用于建议搜索的Radix字典树,它允许快速搜索由一组关键词索引的数据

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 数据结构

MIT许可证

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