在Lucene中形成涉及整数的范围查询

时间:2013-06-06 18:45:13

标签: lucene

我在Lucene索引中搜索开始时间字段值小于或等于我的时间(t)且结束时间字段值大于我的文档时间(t)。这里的开始时间,结束时间和我的时间都是 hh:mm 格式。我已将它们全部转换为等于 hh * 60 + mm 的整数值。 现在我想检查我的时间值是否在与开始时间相关的值和与完成时间相关的值之间的范围内。

但在这里我遇到了几个问题。它们如下:

1.我无法将具有整数值的字段添加到索引中。

2.我无法理解如何在Lucene中形成涉及整数的范围查询。

所以如果有人帮我解决这个问题,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

1:使用IntField,例如:

document.add(new IntField("starttime", 1234, Field.Store.YES));

2:The query parser now supports Numeric Range queries,就像starttime:[1234 TO 1345]一样,或者您可以自己创建NumericRangeQuery,例如:

Query rangeQuery = NumericRangeQuery.newIntRange("starttime", 1234, 1345, false, false);

或者对于大于,可以通过为其中一个值传递null来打开范围。

Query rangeQuery = NumericRangeQuery.newIntRange("starttime", 1234, null, false, false);