Solr Lucene模糊匹配返回错误的结果

时间:2011-09-20 05:53:58

标签: lucene solr levenshtein-distance

我正在尝试为我的应用程序测试SOLR以查找字符串之间的百分比匹配。

我现在仅为first_name匹配配置了solr和定义的模式,我在模式中使用了text_general数据类型(solr 3.3)。

在我的文件/ csv中我保留了单词“rushik”,在solr查询中我试图用“rushk”搜索 - 故意删除“i”

理想情况下,使用levenshtein算法,两个字符串之间的距离为1,因此字符串之间的百分比匹配应为(1 - distance / maxLen(string1,string2)),即(1 - 1/6)= 0.83 - 这意味着两个字符串是83%匹配。

但在solr中它的匹配直到我在查询中给出了rushk~0.79 ...当我使用~0.80,0.81等它与文档不匹配时。

不确定我的levenshtein字符串匹配计算是否不正确或我究竟能确定问题所在。

非常感谢任何帮助。

谢谢, Rushik。

1 个答案:

答案 0 :(得分:0)

模糊查询的模糊百分比计算是 -

distance = 1 - ((double)dist / (double)Math.min(textlen, targetlen));
return (distance > FUZZY_THRESHOLD);

在你的情况下,它将是1 - 1/5 = 0.8 所以这似乎是有效的。