如何在Lucene的某个范围内搜索术语

时间:2016-04-09 13:54:27

标签: java lucene query-parser

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

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

1 个答案:

答案 0 :(得分:1)

标准QueryParser不支持数值范围。 QueryParser支持的范围查询是Lexicographic,而不是数字。您需要使用NumericRangeQuery

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

另外,可能最好引用QueryParser documentation来了解Lucene的查询语法。范围查询的上限和下限不用逗号分隔。它应该看起来像myField:[begin TO end](但是,这不会是数字范围)。