Lucene 查询语言和数值范围

Lucene query language and numeric range

我正在应用以下 Lucene 查询谓词以获得 2 到 6 范围内的所有包含数字:

value:[2 TO 6]

并接收具有以下值的文档:

567986400000
567986400000
567986400000
536450400000
536450400000
599608800000
536450400000
567986400000

我对数值范围查询很感兴趣,显然,例如 Long567986400000 不在 [2 TO 6] 的范围内。看起来范围搜索是字符串,我不知道如何在我的应用程序中针对不同的数值解决它。

如何在 Lucene 中正确使用数值范围查询?

要实现正确的范围查询,您需要使用 lucene 中特定定义的字段。参见 Field javadoc

  • IntPoint:为 exact/range 查询编制索引的整数。
  • LongPoint:exact/range 查询的长索引。
  • FloatPoint:为 exact/range 查询建立索引的浮点数。
  • DoublePoint:exact/range 查询的双重索引。

因此您需要确保您添加此查询的字段是此类型之一。正如您所说,您使用 Neo4j 生成的 lucene 索引。必须有创建此类字段的选项,否则您将无法执行正确的范围查询。