solr Lucene queryParser正确构建查询,但搜索不工作

hsgswve4  于 2022-11-05  发布在  Solr
关注(0)|答案(1)|浏览(207)

我已经使用lucene对IntPointField进行了索引,我可以使用下面的查询来获取该索引:

Query query = IntPoint.newRangeQuery("field1", 0, 40);
TopDocs topDocs = searcher.search(query);
System.out.println(topDocs.totalHits);

其正确地获取相关的。
如果我使用parse构建查询,它将不起作用

Query query = new QueryParser(Version.LUCENE_8_11_0.toString(), new StandardAnalyzer()).parse("field1:[0 TO 40]");

我检查了两个查询的字符串表示,它们看起来相同,如下所示

field1:[0 TO 40]

有人知道我做错了什么吗?

2skhul33

2skhul331#

IntPoint字段需要自定义查询传递程序。以下解决了此问题

StandardQueryParser parser = new StandardQueryParser();
parser.setAnalyzer(new StandardAnalyzer());
PointsConfig indexableFields = new PointsConfig(new DecimalFormat(), Integer.class);
Map<String, PointsConfig> indexableFieldMap = new HashMap<>();
pointsConfigMap.put("field1", indexableFields);
parser.setPointsConfigMap(indexableFieldMap);

相关问题