如何在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中搜索特定范围内的词的主要内容,如果未能解决你的问题,请参考以下文章

在大型数据库中搜索特定 ID?

如何在子目录中搜索特定文件?

如何在 DataTable 中搜索特定记录?

如何在jtree中搜索特定节点并使该节点展开。?

如何在表中的 JSON 数据中搜索特定数据

如何在 MySQL 数据库中搜索特定列名? [复制]