5个版本

0.1.4 2023年4月1日
0.1.3 2023年2月18日
0.1.2 2023年2月12日
0.1.1 2023年2月11日
0.1.0 2023年2月11日

255压缩 中排名

每月24次下载

Apache-2.0

10KB
66

weighted_trie

🦀 一个允许创建可用于自动补全的加权前缀树的Rust crate

发布API文档

License: Apache 2.0

快速入门

要使用weighted-trie,请将以下内容添加到您的Cargo.toml文件中

[dependencies]
weighted_trie = "0.1.0"  # NOTE: Replace to latest minor version.

使用概述


use weighted_trie::WeightedTrie;

fn main() {
   let mut trie = WeightedTrie::new();
    // build trie with words and assoicated weights
    trie.insert("pie".to_owned(), 5);
    trie.insert("pita".to_owned(), 2);
    trie.insert("pi".to_owned(), 1);
    trie.insert("pizza".to_owned(), 10);

    // get prefix based suggestions sorted by weight
    let suggestions = trie.search("pi");
    assert_eq!(suggestions, vec!["pizza", "pie", "pita", "pi"]);

    let suggestions = trie.search("piz");
    assert_eq!(suggestions, vec!["pizza"]);

    // out of vocabulary
    let suggestions = trie.search("apple");
    assert_eq!(suggestions.len(), 0);

}

或者您也可以使用 .build 方法

use weighted_trie::{WeightedString, WeightedTrie};

fn main() {
    let weighted_strings = vec![
           WeightedString {
               word: "pie".to_owned(),
               weight: 5,
           },
           WeightedString {
               word: "pita".to_owned(),
               weight: 2,
           },
           WeightedString {
               word: "pi".to_owned(),
               weight: 1,
           },
           WeightedString {
               word: "pizza".to_owned(),
               weight: 10,
           },
       ];

    let trie = WeightedTrie::build(weighted_strings);

}

基准测试

使用100k个加权字符串

weighted_trie/insert    time:   [374.13 ms 377.97 ms 382.13 ms]
weighted_trie/lookup    time:   [709.69 µs 725.45 µs 751.34 µs]
weighted_trie/build     time:   [375.60 ms 380.36 ms 385.45 ms]

指南

README.mdcargo readme 命令生成。请勿手动更新 README.md,而是编辑 src/lib.rs,然后运行 cargo readme > README.md

待办事项

  1. 添加测试
  2. 基准测试查找速度
  3. 基准测试插入速度
  4. 测量内存占用
  5. 尝试低垂的果实优化,例如使用 hashbrown 代替标准HashMap

许可证

许可证:Apache-2.0

无运行时依赖