Lucene 字符串和数字范围查询

Lucene String and Numeric range queries

我很好奇为什么 Lucene 不以标准方式区分字符串和数值。例如 ['2' TO '6'][2 TO 6] 用于范围查询,默认情况下将它们全部视为字符串.

是否有任何特殊原因将这两种情况都视为字符串值?

您的范围查询示例基于 lucene 查询语法。在这个定义中没有定义你执行这个查询的字段类型。

基本上,如果您将此查询应用于 TextField,则评估将基于 String。如果将此应用于 IntPoint,则数字将被解释为整数。对此负责的是 QueryParser,您可以在其中添加查询和要搜索的字段。

在你的例子中使用 IntPoint 是有意义的,因为你想搜索一个数字范围。

有关查询解析器的更多详细信息,请参阅 QueryParser Javadoc