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

Java 如何查询lucene中的2个索引字段?,java,lucene,Java,Lucene,我想使用lucene执行查询。但查找不仅应基于输入,还应基于第二个参数 示例:假设lucene索引应该包含citynames和countrycodes 现在,在查找过程中,我已经知道所需的cityname应该位于哪个国家。 所以我想通过cityname查询lucene索引,但告诉lucene只查看CountryName匹配的citynames 可能吗?如果是,如何进行 对于单个属性,我只需设置以下内容: QueryParser q = QueryParser(Version matchVersi

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

示例:假设lucene索引应该包含
citynames
countrycodes

现在,在查找过程中,我已经知道所需的cityname应该位于哪个国家。 所以我想通过cityname查询lucene索引,但告诉lucene只查看CountryName匹配的citynames

可能吗?如果是,如何进行

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

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

你能解释一下simple
+cityname:SomeCity+countrycode:SomeCountryCode
的错误吗?我不想自己构造查询字符串,但要定义最终生成该查询的queryparser。