是否有为C#编写的模糊搜索或字符串相似性函数库?

Luc*_*eni 65 .net c# string comparison

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

感谢大家的帮助.

我已经看过lucene,但我需要更容易搜索类似字符串的东西,而不需要索引部分的开销.

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

Geo*_*uer 32

Levenshtein距离实施:

我有一个.NET 1.1项目,我使用后者.它很简单,但完全符合我的需要.从我记得它需要一些调整,但没有什么是不明显的.

  • 为什么这么说"使用LINQ"?这些实现都不使用Linq ... (2认同)

Zaf*_*iro 28

您还可以查看名为Sam的String Metrics http://sourceforge.net/projects/simmetrics/files/的令人印象深刻的图书馆.这包括许多算法.

  • 汉明距离
  • Levenshtein距离
  • Needleman-Wunch距离或卖家算法
  • 史密斯 - 沃特曼距离
  • Gotoh距离或Smith-Waterman-Gotoh距离
  • 块距离或L1距离或城市街区距离
  • Monge Elkan距离
  • Jaro距离度量
  • Jaro Winkler
  • SoundEx距离度量
  • 匹配系数
  • 骰子的系数
  • Jaccard相似度或Jaccard系数或Tanimoto系数
  • 重叠系数
  • 欧氏距离或L2距离
  • 余弦相似度
  • 变化距离
  • Hellinger距离或Bhattacharyya距离
  • 信息半径(Jensen-Shannon分歧)
  • 谐波均值
  • 歪斜分歧
  • 混乱概率
  • 牛头
  • Fellegi和Sunters(SFS)指标
  • TFIDF或TF/IDF
  • 的FastA
  • BLASTP
  • 最大匹配
  • Q-克
  • Ukkonen算法

  • 这个答案中的链接给我403错误.您可以使用[Wayback Machine](http://web.archive.org/web/http://staffwww.dcs.shef.ac.uk/people/sam.chapman@k-now.co.uk/stringmetrics .html)而不是. (14认同)

小智 13

它们不是我自己的发明,但它们是我的最爱,我刚刚在博客上发表了关于它们的文章,并在一篇名为"寻找模糊字符串的四函数"的博客文章中发布了我自己的Dice系数,Levenshtein距离,最长公共子序列和双重Metaphone的调整版本C#扩展中的匹配项.