Apache Lucene 6 QueryParser 范围查询不适用于 IntPoint



我正在使用Lucene 6新IntPoint,我想做一些范围搜索

使用IntPoint.newRangeQuery搜索有效并返回正确的文档,但是当我使用QueryParser(经典(或新StandardQueryParser时,不会返回任何内容。

// This works
Query query =  IntPoint.newRangeQuery("duration",1,20);
System.out.println(query);
//This doesn't work
QueryParser parser = new QueryParser("name", analyzer);
Query query = parser.parse("duration:[1 TO 20]");
System.out.println(query);
//This doesn't work
StandardQueryParser queryParserHelper = new StandardQueryParser();
Query query = queryParserHelper.parse("timestamp:[1 TO 20]", "timestamp");
System.out.println(query);

// In all 3 cases it prints: timestamp:[1 TO 20]

这是一个错误还是我错过了什么?

这不是一个错误,我不会说你错过了任何东西,真的。QueryParser 不支持 IntPoint 字段或任何其他数值 (PointValues( 字段类型。QueryParser 语法中的范围查询将始终生成一个TermRangeQuery,它将根据倒排索引中的词典顺序搜索该字段,这将不适用于搜索 PointValues 字段。使用IntPoint.newRangeQuery和类似方法生成这些是正确的做法。

最新更新