是否有为C#编写的模糊搜索或者字符串相似性函数库?
有类似的问题,但与我可以在源代码中使用的库无关。
谢谢大家的帮助。
我已经看过lucene了,但是我需要更简单的方法来搜索相似的字符串并且没有索引部分的开销。
我标记的答案有两种非常简单的算法,一种也使用LINQ,因此非常完美。
解决方案
回答
用于Linux的Beagle项目是用c(mono)编写的,是类似于Google桌面的搜索工具。那里可能有一些用于此类字符串匹配的代码。
如果我没记错的话,它使用Lucene库搜索和检索数据。也许对项目也可能有用。
回答
我们看过Lucene.net吗?它是Java Lucene搜索引擎API到.Net平台的端口。该库提供了很多搜索功能。我大约一年前就玩过它,所以不要以大量经验为依据接受我的建议。我在《 Windows Developer Power Tools》一书中看到了它,并进行了试驾。我们可能会浏览他们的API文档,以查看是否提供了所需的类似模糊搜索的内容。
回答
此代码项目论文使用Levenshtein距离具有字符串相似性函数。
回答
可以使用以下Levenshtein距离算法为两个字符串的相似度分配一个值(嗯,实际上是差异),该值可用于以下内容:http://www.merriampark.com/ldcsharp.htm
回答
Levenshtein距离实现:
- 使用LINQ(不是真的,请参阅注释)
- 不使用LINQ
我有一个.NET 1.1项目,在其中使用了后者。这很简单,但是完全可以满足我的需求。从我记得的情况来看,它需要进行一些调整,但是没有什么是显而易见的。
回答
我已经使用" C#中的三元搜索树字典"(http://www.codeproject.com/KB/recipes/tst.aspx)来搜索相似的字符串。
问候,帕特里西奥
回答
我们还可以在http://sourceforge.net/projects/simmetrics/files/上查看名为Sam的String Metrics的库。其中包括许多算法。
- 汉明距离
- 莱文施泰因距离
- Needleman-Wunch距离或者卖方算法
- 史密斯-沃特曼距离
- Gotoh距离或者Smith-Waterman-Gotoh距离
- 街区距离或者L1距离或者城市街区距离
- 蒙吉·艾尔坎(Monge Elkan)距离
- Jaro距离度量
- 杰罗·温克勒(Jaro Winkler)
- SoundEx距离度量
- 匹配系数
- 切丁系数
- Jaccard相似度或者Jaccard系数或者Tanimoto系数
- 重叠系数
- 欧氏距离或者L2距离
- 余弦相似度
- 变距
- Hellinger距离或者Bhattacharyya距离
- 信息半径(詹森-香农散度)
- 谐波均值
- 斜散度
- 混淆概率
- 头
- Fellegi和Sunters(SFS)指标
- TFIDF或者TF / IDF
- FastA
- 冲击波
- 最大匹配
- 语法
- Ukkonen算法