java - 如何在lucene中查询2个索引字段?

标签 java lucene

我想使用 lucene 执行查询。但查找不仅应该基于输入,还应该基于第二个参数。

示例:假设 lucene 索引应包含 citynamescountrycodes

现在,在查找过程中我已经知道所需的城市名称应该位于哪个国家/地区。 所以我想通过城市名查询 lucene 索引,但告诉 lucene 只查看国家/地区代码匹配的城市名。

这可能吗?如果是,怎么办?

对于单个属性,我只需设置以下内容:

QueryParser q = QueryParser(Version matchVersion, String f, Analyzer a)
Query q = queryParser.parse(input);

但是 2 个属性又如何呢?

最佳答案

像这样的东西应该可以工作。未经测试,但您应该明白:

String countryCode = ....;  // known in advance
QueryParser queryParser = new QueryParser(matchVersion, f, a);
Query cityNameQuery = queryParser.parse(inputWithCityName);
Query countryCodeQuery = queryParser.parse("+countrycode:" + countryCode);

BooleanQuery result = new BooleanQuery();
result.add(new BooleanClause(cityNameQuery, MUST));
result.add(new BooleanClause(countryCodeQuery, MUST));

关于java - 如何在lucene中查询2个索引字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25083076/

相关文章:

java - Android ListView 中的阿拉伯文字

java - Selenium 3 : Cannot disable first run webpage

java - 如何使用 Java 套接字 HTTP/1.1 请求下载图像?

java按静音区分割声音

elasticsearch - Elasticsearch中的软must_not

单击/聚焦时 Java FX 按钮略小

java - 使用 Hibernate Search Query DSL 构建模糊查询时如何处理同义词和停用词

java - Lucene 4.0 中的文本搜索

java - lucene 在查询中获取匹配项

java - 使用 Lucene 在一个句子中搜索一个短语和一个单词