2个不稳定版本

0.2.0 2024年8月19日
0.1.0 2024年8月19日

#552 in 文本处理

Download history 243/week @ 2024-08-16

243 每月下载量

MIT 许可证

10KB
153

rizzer

Rust模糊匹配库

算法描述

此库实现了一种基于fzf算法的模糊字符串匹配算法。目前是一个很差的移植版本,但我将努力在将来改进它。

算法的工作原理如下

  1. 它根据上下文(例如,空格或标点符号之后)为字符位置计算奖励分数。
  2. 它使用动态规划构建一个得分矩阵,考虑匹配、空格和奖励。
  3. 它执行回溯以找到最佳匹配子序列。
  4. 该算法支持不区分大小写的匹配和Unicode规范化。

匹配过程将更高的分数分配给连续匹配和单词边界上的匹配,使其特别适用于在较长的文本或项目列表中进行搜索。

API描述

库公开了两个主要功能

  1. fuzzy_match(text: &str,pattern: &str,case_sensitive: bool,normalize: bool) -> (isize, isize, i32, Vec<usize>)

    • textpattern之间执行完全模糊匹配。
    • 返回一个包含
      • 匹配的起始索引
      • 匹配的结束索引
      • 匹配得分
      • 匹配位置向量
  2. fuzzy_match_score(text: &str,pattern: &str,case_sensitive: bool,normalize: bool) -> i32

    • 一个简化的版本,仅返回匹配得分。

两个函数都接受以下参数

  • text:要搜索的文本
  • pattern:要搜索的模式
  • case_sensitive:匹配是否区分大小写
  • normalize:是否应用Unicode规范化

使用这些函数在Rust应用程序中实现模糊搜索。我发现最好的用途是用于匹配字符串列表以实现自动完成、结果过滤等。

依赖关系

~790KB
~40K SLoC