Lucene.NET(字符串模糊匹配)

7

有没有人能给我举个例子,说明如何使用Lucene.NET(或Java版本的Lucene,或其他具有Lucene端口的语言)对两个字符串进行模糊匹配。

1个回答

7

您能具体说明一下“模糊匹配”的意思吗?

Lucene使用波浪号(~)操作符和通配符(* & ?)提供模糊查询。 请参见此处

如果您想比较两个字符串的距离,使用Levenshtein、Jaro-Winkler等方法,最好使用一个单独的库,如SimMetrics。 我在生产网站中使用Simmetrics,效果很棒。

SimMetricsMetricUtilities.Levenstein ls = new SimMetricsMetricUtilities.Levenstein(); //compare string 1, string 2 
double sim = ls.GetSimilarity(string_1, string_2); 
if(sim > [some value]) 
{ 
//do something 
} 

谢谢您的回答先生。您是正确的,我想使用Levenshtein算法比较两个字符串,您能否给我一个示例,如何使用SimMetrics模糊匹配两个字符串? - user306080
1
其实非常简单:
  1. 在您的项目中添加对Simmetrics dll的引用
  2. 在您想要运行相似性的方法中,
SimMetricsMetricUtilities.Levenstein ls = new SimMetricsMetricUtilities.Levenstein();//比较字符串1和字符串2 double sim = js.GetSimilarity(string_1, string_2);if(sim > [某个值]) { //做一些事情 }
- Mikos
我看到的唯一问题是,在从Lucene获取结果之后再进行匹配。 - Rafael Herscovici

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接