可以搜索表达式(查询解析器语法)搜索一个数字字段



我用NumericField在lucene Index中写一个Integer

doc.add(
    new NumericField("id",Integer.MAX_VALUE,Field.Store.YES,true)
        .setIntValue(123)
);

现在我有一个问题,如何通过 id filed(NumericField)编写搜索表达式?

我试过了:

id:123id:intToPrefixCoded(123)

但没有什么回报

参考:

  • Apache Lucene - 查询解析器语法
  • NumericUtils

这不起作用,因为数值字段的内部表示形式与其文本表示形式不同。您应该手动构造数值查询或扩展 Lucene 查询分析器。您需要做的就是扩展new*Query(术语、范围等)方法,并对字段名称进行 if/else 测试,以了解是否应创建数字查询或常规查询。

参见 Lucene wiki 了解更多信息。

最新更新