2

我想搜索 中的术语[0, 10],术语来自存储为整数的“CityId”字段。我写的内容如下:

String queryStr = "CityId : [0, 10]";
Query query = parser.parse(queryStr);
TopDocs topDocs = searcher.search(queryStr);
4

1 回答 1

2

标准 QueryParser 不支持数字范围。QueryParser 支持的范围查询是字典式的,而不是数字式的。为此,您需要使用NumericRangeQuery

Query query = NumericRangeQuery.newIntRange("CityId", 0, 10, true, true);

此外,最好参考QueryParser 文档了解 Lucene 的查询语法是什么样的。范围查询上限和下限不以逗号分隔。它应该看起来像myField:[begin TO end](同样,这不会是一个数字范围)。

于 2016-04-09T19:21:24.780 回答