字符串相似度算法

时间:2013-03-08 20:54:37

标签: c# .net string algorithm sql-like

我有两个字符串(它们最终会在一个简单的数据库中被描述),让我们说它们是

  1. 字符串A:“Apple orange coconut lime jimmy buffet”
  2. 字符串B:“汽车 自行车滑板“
  3. 我正在寻找的是这个。我想要一个输入“cocnut”的函数,输出为“String A”

    我们可能在资本化方面存在差异,拼写并不总是存在。如果你愿意的话,目标是“快速而肮脏”的搜索。

    是否存在任何.net(或第三方),或者为字符串推荐“相似度算法”,因此我可以检查输入是否具有“非常接近的片段”并将其返回?我的数据库将有50个条目,顶部。

1 个答案:

答案 0 :(得分:12)

您要搜索的内容称为两个字符串之间的edit distance。有很多实现 - here’s one from Stack Overflow itself

由于您只搜索字符串的 part ,因此您需要的是本地最优匹配,而不是此方法计算的全局匹配。

这被称为local alignment problem,再一次它可以通过几乎相同的算法轻松解决 - 唯一改变的是初始化(我们不会惩罚任何来自之前的搜索字符串)和最佳值的选择(我们不会惩罚搜索字符串后的任何内容)。