我想用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));

08-25 22:49