Crates.io | suggestion_trie |
lib.rs | suggestion_trie |
version | 0.1.4 |
source | src |
created_at | 2023-07-07 02:39:27.78347 |
updated_at | 2023-07-09 16:34:38.863296 |
description | A Radix trie for suggestion search, it allows to search for data indexed by a set of keywords fast. |
homepage | https://github.com/angelorodem/SuggestionTrie |
repository | https://github.com/angelorodem/SuggestionTrie |
max_upload_size | |
id | 910447 |
size | 106,359 |
A Radix trie for suggestion search, it allows searching for data indexed by a set of keywords fast.
A common usage for suggestion tries is to find data like words, documents, executables and any other data that is associated with a set of words;
Search for a word (in this example, an password) in a list with +256M entries in µs.
You can add custom data to the indexed suggestions, like file paths, dates, hashes, etc.
Cargo.toml
suggestion_trie = "^0.1"
Code example
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");
check the docs here