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

发布于 2024-12-05 14:08:30 字数 493 浏览 2 评论 0原文

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

我现在配置了 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 字符串匹配的计算是否不正确,或者我如何准确地确定问题出在哪里。

非常感谢这里的任何帮助。

谢谢, 鲁希克。

I am trying to test SOLR for my application for finding percentage match between strings.

I configured solr and defined schema only for first_name matching for now, I used text_general datatype in schema (solr 3.3).

In my document/csv I kept word "rushik" and in solr query I am trying to search with "rushk" - intentionally removed "i"

Ideally with levenshtein algorithm the distance is 1 between above two strings thus percentage match between strings should be (1 - distance/maxLen(string1, string2)) which is (1 - 1/6) = 0.83 - that means both strings are 83% match.

But in solr its matching till I give rushk~0.79 in query - when I am using ~0.80, 0.81 etc its not matching with document.

Not sure if my calculation of levenshtein string match is incorrect or how exactly I can determine where the problem is.

Any help here is highly appreciated.

Thanks,
Rushik.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼睛会笑 2024-12-12 14:08:30

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

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

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

The fuzzy percentage calculation for fuzzy query is -

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

In your case it would be 1 - 1/5 = 0.8
So this seems valid.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文