lucene中用于长值的TermRangeQuery

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

我正在使用lucene8,并试图对历元值(即正在索引的文档的时间戳)执行范围查询。然而,我已经看到lucene 8只支持术语范围查询,它采用参数bytesref而不是long。有人能告诉我,是否有任何替代方案需要长时间作为输入值并执行范围查询,或者请告诉我如何将长值转换为bytesref

下面是我的代码:

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)
进行查询似乎更容易