Lucene查询找到值[0 TO 1],例如167

yftpprvb  于 2022-11-07  发布在  Lucene
关注(0)|答案(2)|浏览(135)

我已经和卢克一起打开了索引,字段就在那里。
该字段通过HibernateSearch进行索引,并按如下方式进行注解:

@Field(name = "id", index = Index.YES, analyze = Analyze.NO, store = Store.NO)
Long id

此字段的值介于109和185之间。如果我搜索此字段,例如:[150至180]则未找到任何内容。
如果我使用以下内容搜索它:[0 TO 1],则返回所有结果。似乎该字段的索引格式错误,对吗?如何更正?
请注意,我也用store = Store.YES索引了一次,以便在Luke中看到这些值,并且可以正确地看到它们。

b09cbbtk

b09cbbtk1#

Lucene中的查询解析器会将所有内容都视为字符串。这是有意义的:在查询时Lucene并不知道使用了哪些类型,这意味着它们将创建字符串范围查询。
因此,如果你想让Lucene创建一个合适的数值范围查询,你需要子类化MultiFieldsQueryParser(假设你使用了它)并覆盖newRangeQuery。在那里,你可以检查字段名,如果你知道它是一个数值字段,你可以创建一个范围查询(例如,使用LongPoint.newRangeQuery())。

anauzrmj

anauzrmj2#

我现在发现我必须使用NumericRangeQuery.newLongRange()

相关问题