2个不稳定版本
新 0.2.0 | 2024年8月19日 |
---|---|
0.1.0 | 2024年8月19日 |
#552 in 文本处理
243 每月下载量
10KB
153 行
rizzer
Rust模糊匹配库
算法描述
此库实现了一种基于fzf算法的模糊字符串匹配算法。目前是一个很差的移植版本,但我将努力在将来改进它。
算法的工作原理如下
- 它根据上下文(例如,空格或标点符号之后)为字符位置计算奖励分数。
- 它使用动态规划构建一个得分矩阵,考虑匹配、空格和奖励。
- 它执行回溯以找到最佳匹配子序列。
- 该算法支持不区分大小写的匹配和Unicode规范化。
匹配过程将更高的分数分配给连续匹配和单词边界上的匹配,使其特别适用于在较长的文本或项目列表中进行搜索。
API描述
库公开了两个主要功能
-
fuzzy_match(text: &str,pattern: &str,case_sensitive: bool,normalize: bool) -> (isize, isize, i32, Vec<usize>)
- 在
text
和pattern
之间执行完全模糊匹配。 - 返回一个包含
- 匹配的起始索引
- 匹配的结束索引
- 匹配得分
- 匹配位置向量
- 在
-
fuzzy_match_score(text: &str,pattern: &str,case_sensitive: bool,normalize: bool) -> i32
- 一个简化的版本,仅返回匹配得分。
两个函数都接受以下参数
text
:要搜索的文本pattern
:要搜索的模式case_sensitive
:匹配是否区分大小写normalize
:是否应用Unicode规范化
使用这些函数在Rust应用程序中实现模糊搜索。我发现最好的用途是用于匹配字符串列表以实现自动完成、结果过滤等。
依赖关系
~790KB
~40K SLoC