lucene中用于长值的TermRangeQuery
我正在使用lucene8,并试图对历元值(即正在索引的文档的时间戳)执行范围查询。然而,我已经看到lucene 8只支持术语范围查询,它采用参数bytesref而不是long。有人能告诉我,是否有任何替代方案需要长时间作为输入值并执行范围查询,或者请告诉我如何将长值转换为bytesref 下面是我的代码:lucene中用于长值的TermRangeQuery,lucene,range,byte,long-integer,epoch,Lucene,Range,Byte,Long Integer,Epoch,我正在使用lucene8,并试图对历元值(即正在索引的文档的时间戳)执行范围查询。然而,我已经看到lucene 8只支持术语范围查询,它采用参数bytesref而不是long。有人能告诉我,是否有任何替代方案需要长时间作为输入值并执行范围查询,或者请告诉我如何将长值转换为bytesref 下面是我的代码: Term startTerm = new Term(OFFER_END_DATE_KEY, valueOf(Instant.now())); Term endTerm = new Term
Term startTerm = new Term(OFFER_END_DATE_KEY, valueOf(Instant.now()));
Term endTerm = new Term(OFFER_END_DATE_KEY, valueOf(Instant.now().plus(2, ChronoUnit.YEARS)));
new TermRangeQuery(OFFER_END_DATE_KEY, startTerm, endTerm, true, true);
解决方法之一是使用以下构造:
TermRangeQuery.newStringRange(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper);
要使用此选项,请将历元时间戳转换为字符串值。要直接回答您的
BytesRef
问题,LongPoint
字段类型()有一个静态方法pack
但是,在索引时使用LongPoint
字段,并使用LongPoint.newRangeQuery(字符串字段,long[]lowerValue,long[]upperValue)
进行查询似乎更容易