我正在尝试为我的应用程序测试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。
答案 0 :(得分:0)
模糊查询的模糊百分比计算是 -
distance = 1 - ((double)dist / (double)Math.min(textlen, targetlen));
return (distance > FUZZY_THRESHOLD);
在你的情况下,它将是1 - 1/5 = 0.8 所以这似乎是有效的。