it-swarm.cn

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

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

感谢大家的帮助。

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

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

62
Luca Molteni

Levenshtein距离实施:

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

31
George Mauer

你还可以看一下名为Sam's 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算法
28
Zaffiro

它们不是我自己的发明,但它们是我的最爱,我刚刚在博客上发表了关于它们的文章,并在一篇名为 四种寻找功能的博客文章中发布了我自己的调整版Dice Coefficient,Levenshtein Distance,Longest Common Subsequence和Double Metaphone C#扩展中的模糊字符串匹配

12
Tyler Jensen

你看过 Lucene.net ?它是.Net平台的Java Lucene搜索引擎API的一个端口。该库提供了大量搜索功能。我大约一年前玩过它,所以不要基于大量的经验来接受我的建议。我在书中找到了它 Windows Developer Power Tools 并将其用于试驾。您可以查看他们的 API文档 看看它是否提供了您正在寻找的模糊搜索。

2
Jason Jackson

这个 代码项目文件 使用 Levenshtein距离 具有字符串相似性函数。

1
Ed Schwehm

有以下Levenshtein距离算法,它为两个字符串(实际上是差异)的相似性赋值,可用于构建: http://www.merriampark.com/ldcsharp.htm

1
benefactual

我使用了“C#中的三元搜索树词典”( http://www.codeproject.com/KB/recipes/tst.aspx )来搜索类似的字符串。

此致,帕特里西奥

0
patriciovidal

Beagle项目 for Linux是用c#(单声道)编写的,是一个像搜索工具一样的谷歌桌面。它可能有一些代码用于这种字符串匹配。

如果我没记错的话,它使用 Lucene 库来搜索和检索数据。也许这对你的项目也很有用。

0
Isak Savo