【问题标题】:How to query lucene for 2 index fields?如何查询 lucene 的 2 个索引字段?
【发布时间】:2014-08-01 14:59:20
【问题描述】:

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

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

现在,在查找过程中,我已经知道所需的城市名称应该在哪个国家/地区。 所以我想按城市名查询 lucene 索引,但告诉 lucene 只查看国家代码匹配的城市名。

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

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

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

但是 2 个属性如何呢?

【问题讨论】:

  • 你能解释一下简单的+cityname:SomeCity +countrycode:SomeCountryCode会有什么问题吗?
  • 我不想自己构造查询字符串,而是定义最终生成该查询的查询解析器。

标签: java lucene


【解决方案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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-18
    • 2012-06-24
    • 2019-07-06
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2012-02-12
    相关资源
    最近更新 更多