是否有为C#编写的模糊search或string相似函数库?

有类似的问题,但不涉及我可以在我的源代码中使用的C#库。

感谢大家的帮助。

我已经看到了lucene,但是我需要更容易的search类似的string,而不需要索引部分的开销。

我标记的答案有两个非常简单的algorithm,也有一个使用LINQ,所以它是完美的。

Levenshtein距离实现:

  • 使用LINQ (不是真的,请参阅评论)
  • 不使用LINQ

我有一个.NET 1.1项目,我使用后者。 这是简单的,但完美的为我所需要的。 从我记得它需要一点调整,但没有什么不明显的。

你也可以看看这个非常令人印象深刻的库,名为Sam's String Metrics http://sourceforge.net/projects/simmetrics/files/ 。 这包括一系列algorithm。

  • 海明距离
  • Levenshtein距离
  • Needleman-Wunch距离或卖家algorithm
  • 史密斯 – 沃特曼距离
  • Gotoh距离或Smith-Waterman-Gotoh距离
  • 块距离或L1距离或城市街区距离
  • 蒙热埃尔坎距离
  • Jaro距离度量
  • Jaro Winkler
  • SoundEx距离度量
  • 匹配系数
  • 骰子的系数
  • Jaccard相似度或Jaccard系数或Tanimoto系数
  • 重叠系数
  • 欧几里得距离或L2距离
  • 余弦相似
  • 变化的距离
  • Hellinger距离或Bhattacharyya距离
  • 信息半径(Jensen-Shannon发散)
  • 谐波平均值
  • 偏离分歧
  • 混乱的可能性
  • 牛头
  • Fellegi和Sunters(SFS)指标
  • TFIDF或TF / IDF
  • 的FastA
  • BLASTP
  • 最大匹配
  • Q-克
  • Ukkonenalgorithm

他们不是我自己的发明,但他们是我的最爱,我只是在博客上发表了我自己调整的Dice Coefficient,Levenshtein Distance,Longest Common Subsequence和Double Metaphone的版本。 匹配C#扩展 。

你看过Lucene.net吗? 它是.Net平台的Java Lucenesearch引擎API的一个端口。 该库提供了大量的searchfunction。 我在一年前左右玩过,所以不要以我的经验为基础。 我在“ Windows开发者电动工具 ”一书中看到它,并将其作为试用版。 您可以查看他们的API文档 ,看看它是否提供了您正在寻找的模糊search。

这个代码项目文件有一个使用Levenshtein距离的string相似性函数。

下面的Levenshtein距离algorithm给两个string的相似性(实际上差别)分配一个值,可用于build立: http : //www.merriampark.com/ldcsharp.htm

Beagle Project for Linux是用c#(单声道)编写的,是一个谷歌桌面search工具。 这里可能有一些代码用于这种string匹配。

如果我记得正确的话,它使用Lucene库来search和检索数据。 也许这对你的项目也是有用的。

我用C#中的“三元search树词典”( http://www.codeproject.com/KB/recipes/tst.aspx )来search类似的string。

问候,帕特里西奥

看看这里。

它绝对值得自己去看看。

http://en.wikipedia.org/wiki/Edit_distance