如何在Lucene中搜索特定范围内的词
Posted
技术标签:
【中文标题】如何在Lucene中搜索特定范围内的词【英文标题】:How to search term in a certain range in Lucene 【发布时间】:2016-07-30 18:52:55 【问题描述】:我想搜索[0, 10]
中的术语,术语来自存储为整数的“CityId”字段。我写的内容如下:
String queryStr = "CityId : [0, 10]";
Query query = parser.parse(queryStr);
TopDocs topDocs = searcher.search(queryStr);
【问题讨论】:
你的查询结果是什么?如果您不想解析查询字符串,您可以像这样构建 NumericRangeQuery:NumericRangeQuery。 newIntRange(0,10,true, true) 【参考方案1】:标准 QueryParser 不支持数字范围。 QueryParser 支持的范围查询是字典式的,而不是数字式的。为此,您需要使用NumericRangeQuery:
Query query = NumericRangeQuery.newIntRange("CityId", 0, 10, true, true);
另外,请参考QueryParser documentation 了解 Lucene 的查询语法是什么样的。范围查询上限和下限不以逗号分隔。它应该看起来像 myField:[begin TO end]
(不过,这不会是 numeric 范围)。
【讨论】:
以上是关于如何在Lucene中搜索特定范围内的词的主要内容,如果未能解决你的问题,请参考以下文章