#模糊搜索 #搜索 #模糊匹配 #bitap #加权搜索

fuse-rust

Fuse是一个超轻量级的库,它提供了一种简单的方式来执行模糊搜索。Fuse-Rust是Fuse-Swift的Rust版移植,纯Rust编写

9个版本

0.3.2 2023年10月2日
0.3.1 2022年12月8日
0.3.0 2021年8月29日
0.2.0 2020年12月23日
0.1.2 2020年10月6日

#576算法

Download history 24/week @ 2024-04-04 60/week @ 2024-04-11 120/week @ 2024-04-18 18/week @ 2024-04-25 5/week @ 2024-05-09 7/week @ 2024-05-16 6/week @ 2024-05-23 11/week @ 2024-05-30 18/week @ 2024-06-06 14/week @ 2024-06-13 13/week @ 2024-06-20 10/week @ 2024-06-27 59/week @ 2024-07-04 3/week @ 2024-07-11 7/week @ 2024-07-18

每月 80 次下载
用于 2 crates

MIT 许可证

1.5MB
529

Fuse-rust

什么是Fuse?

Fuse是一个超轻量级的库,它提供了一种简单的方式来执行模糊搜索。

Fuse-RS是将https://github.com/krisk/fuse-swift移植到Rust的版本。

用法

一个真实用例的示例,使用iced制作的搜索栏也是可用的。

尝试使用

cargo run --package search_bar

查看所有可用的示例及其源代码 这里。

异步

使用“async”特性标志,也可以使用异步函数。

fuse-rust = { version = ..., features = ["async"]}

初始化

第一步是创建一个fuse对象,并带有必要的参数。Fuse::default返回以下参数。

Fuse::default() = Fuse{
    location: 0, // Approx where to start looking for the pattern
    distance: 100, // Maximum distance the score should scale to
    threshold: 0.6, // A threshold for guess work
    max_pattern_length: 32, // max valid pattern length
    is_case_sensitive: false,
    tokenize: false, // the input search text should be tokenized
}

有关如何实现单个搜索操作,请参阅示例。

选项

如上所述,Fuse接受以下选项

  • location:期望在文本中找到模式的大致位置。默认为0
  • distance:确定匹配必须与模糊location(如上所述)多近。与模糊位置相差distance个字符的精确字母匹配会被计为完全不匹配。距离为0表示匹配必须在指定的location处,距离为1000表示完美的匹配必须在模糊位置附近800个字符内,使用0.8的阈值来找到。默认为100
  • threshold:匹配算法何时放弃。阈值为0.0表示需要完全匹配(包括字母和位置),阈值为1.0则匹配任何内容。默认值为0.6
  • maxPatternLength:最大有效模式长度。模式越长,搜索操作越密集。如果模式长度超过maxPatternLength,则search操作将返回nil。为什么这很重要?阅读此内容。默认值为32
  • isCaseSensitive:指示比较是否应区分大小写。默认值为false

依赖