1

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

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

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

2.我不明白如何在 Lucene 中形成这个涉及整数的范围查询。

因此,如果有人帮助我解决此问题,我将不胜感激,谢谢。

4

1 回答 1

0

1:使用IntField,例如:

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

2: 查询解析器现在支持 Numeric Range 查询,简单的 like starttime:[1234 TO 1345],或者你可以自己创建一个NumericRangeQuery,比如:

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

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

Query rangeQuery = NumericRangeQuery.newIntRange("starttime", 1234, null, false, false);
于 2013-06-06T21:02:18.317 回答