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

时间:2014-08-01 14:59:21

标签: java lucene

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

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

现在,在查询期间,我已经知道所需城市名称应该在哪个国家/地区。 所以我想通过cityname查询lucene索引,但告诉lucene只查看countrycode匹配的citynames。

它可能吗?如果是,怎么样?

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

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

但是如何获得2个属性?

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效。未经测试但你应该明白这个想法:

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));