我想用lucene
执行查询。但查找不仅应基于输入,还应基于第二个参数。
示例:假设lucene索引应包含citynames
和countrycodes
。
现在,在查询期间,我已经知道所需城市名称应该在哪个国家/地区。 所以我想通过cityname查询lucene索引,但告诉lucene只查看countrycode匹配的citynames。
它可能吗?如果是,怎么样?
对于单个属性,我只需设置以下内容:
QueryParser q = QueryParser(Version matchVersion, String f, Analyzer a)
Query q = queryParser.parse(input);
但是如何获得2个属性?
答案 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));