首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LUKE进行Lucene数值范围搜索

使用LUKE进行Lucene数值范围搜索
EN

Stack Overflow用户
提问于 2011-02-03 17:20:14
回答 4查看 5.7K关注 0票数 3

我有许多数字Lucene索引字段:

代码语言:javascript
复制
60000
78500
105000

如果我使用LUKE查询78500,如下所示:

代码语言:javascript
复制
price:78500

它返回正确的记录,但是,如果我试图返回所有三个记录作为一个范围,我没有得到任何结果。

代码语言:javascript
复制
price:[60000 TO 105000]

我意识到这是由于填充,因为数字是Lucene处理的字符串,但是我只想知道我应该在LUKE中放入什么才能返回这三条记录。

非常感谢您的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-07 18:31:35

我使用的解决方案是,需要将为价格输入的值以填充形式添加到索引中。然后,我将只查询新的填充值,它工作得很好。因此,索引中的新值为:

代码语言:javascript
复制
060000
078500
105000

这个解决方案被捆绑到一个检查Umbraco的搜索问题中,所以论坛上有一个关于如何实现基于数字的范围搜索的线索,如果有人需要的话,它位于这里,并进行了端到端的遍历。

Umbraco Forum Thread

票数 3
EN

Stack Overflow用户

发布于 2013-05-07 00:20:46

如果字段被索引为NumericField,则必须使用查询解析器选项卡中的"Use XML Query Parser“选项和3.5版本的Luke3.5:

https://code.google.com/p/luke/downloads/detail?name=lukeall-3.5.0.jar&can=2&q=

使用字符串和数字字段的查询示例如下:

代码语言:javascript
复制
<BooleanQuery>
<Clause fieldName="colour" occurs="must">
    <TermQuery>rojo</TermQuery>
</Clause>
<Clause fieldName="price" occurs="must">
    <NumericRangeQuery type="int" lowerTerm="4000" upperTerm="5000" />
</Clause>
</BooleanQuery>
票数 11
EN

Stack Overflow用户

发布于 2011-02-04 05:27:09

  1. 零填充不会出现在此特定查询中,因为您所显示的所有数字都具有相同的位数
  2. 您所显示的范围查询在range
  3. 的第二部分上有太多的零,因此您所显示的数据的查询将为price:[10500 TO 78500]

希望这能帮上忙

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4884241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档