You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中对字符串进行多术语近似匹配搜索?

多模式精确/近似字符串匹配实现方案咨询

我有一个字符串S和一个字符串列表allItems,其中allItems有以下约束:

  • 列表中的字符串可能包含共同的"子词"
  • 任意元素都不会是另一个元素的扩展(即不存在一个元素是另一个元素的前缀+后缀组合)

约束示例

合理示例:

// 二者均包含Fuzzy,但Fuzzy不在allItems中
const allItems = ["FuzzyBunny", "FuzzyBear"];

不合理示例:

// 因allItems[i] = 任意前缀+allItems[j]+任意后缀
const allItems = ["Fuzzy", "FuzzyBear", "FuzzyBunny", "FuzzyBearBunny"];

需求目标

找到allItems中所有字符串在S中的精确或近似匹配项,并获取以下信息:

  • 匹配到的字符串内容
  • 该字符串在allItems中的索引(matchIndex)
  • 匹配在S中的起始索引和结束索引

示例

输入:

S = "I love FuzzyBears and FuzzyDucks";
allItems = ["FuzzyBear", "FuzzyDuck"];

输出:

[
  { match: "FuzzyBear", matchIndex: 0, startIndex: 7, endIndex: 16 },
  { match: "FuzzyDuck", matchIndex: 1, startIndex: 22, endIndex: 31 }
]

当前进展与诉求

我对模式匹配领域比较陌生,原本想使用类似Aho-Corasick的多模式匹配算法,但该算法不支持近似匹配。

后来了解到模糊化Aho-Corasick自动机的相关理论,但不知道如何用JavaScript实现它。另外,这是一次性运行的需求,不介意代码运行速度慢,希望能获得推荐的算法编码资源或实现思路。


内容的提问来源于stack exchange,提问作者Apoqlite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 01:09:27