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 在 算法 中
每月 80 次下载
用于 2 crates
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