如何查询lucene的2个索引字段



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

最新更新