我想用lucene
执行查询。但是查找不仅应基于输入,还应基于第二个参数。
示例:想象一下,lucene索引应包含citynames
和countrycodes
。
现在,在查找过程中,我已经知道所需城市名称应该在哪个国家/地区。
所以我想按城市名称查询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));