Zend Lucene 词典范围搜索返回不相关结果

发布于 2024-10-03 04:56:17 字数 435 浏览 3 评论 0原文

我正在使用 Zend Lucene 为我的网站构建搜索功能。一切都很好。

了解 Lucene 确实按字典顺序搜索(例如
1、
110、
1111444,
2、
3、
4、
499238492834798,
5、
等)

我已将号码填充为 3 位数字(范围从 010 到 990)。

当我对值 110 到 160 进行范围搜索时(例如字段名称:[110 TO 160]),它返回 040 的结果!从逻辑上讲,这是错误的,因为所有数字都以 1 开头(尽管它仍然会搜索 11、12、13、14、15 和 16),所以它不应该匹配这个结果!

为什么会发生这种情况?我该如何阻止它发生?

[编辑] 我误读了 Zend 文档。按字典顺序对结果进行排序的范围查询。但我的问题仍然存在。

I am using Zend Lucene to build a search feature for my website. All well and good.

Understanding that Lucene does searches lexicographically (e.g.
1,
110,
1111444,
2,
3,
4,
499238492834798,
5,
etc)

I have padded my numbers to 3 digits (ranging from 010 to 990).

When I do a range search for values 110 to 160 (e.g. fieldname:[110 TO 160])it is returning results for 040! Logically this is wrong as all the numbers would start with a 1 (although it would still search for 11, 12, 13, 14, 15 and 16) so it should not match this result!

Why is this happening, and how do I stop it from doing so?

[edit]
I misread the Zend Documentation. The Range Query that sorts results lexicographically. But my problem persists.

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

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

发布评论

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

评论(1

强辩 2024-10-10 04:56:17

我无法找出为什么会这样,所以我正在做一个循环:

for ($i = 0; $i < 50; $i + 10)
{
 $queryString .= 'fieldname:' . ($term + $i) . ' ';
}

创建一个查询,例如:

fieldname:110 fieldname:120 fieldname:130 fieldname:140 fieldname:150 fieldname:160

它确实返回我想要的结果。

I am unable to find out why this is acting like this, so I'm doing a loop:

for ($i = 0; $i < 50; $i + 10)
{
 $queryString .= 'fieldname:' . ($term + $i) . ' ';
}

creates a query such as:

fieldname:110 fieldname:120 fieldname:130 fieldname:140 fieldname:150 fieldname:160

which does return the results I want exactly.

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