gpt4 book ai didi

lucene - 如何使用 Lucene MultiFieldQueryParser 更改默认连接

转载 作者:行者123 更新时间:2023-12-04 14:37:06 27 4
gpt4 key购买 nike

我有一些使用 Lucene 的代码将默认连接运算符保留为 OR,我想将其更改为 AND。一些代码只使用一个普通的 QueryParser,这很好——我可以在这些实例上调用 setDefaultOperator。

不幸的是,在一个地方,代码使用了 MultiFieldQueryParser,并调用了静态“解析”方法(取 String、String[]、BooleanClause.Occur[]、Analyzer),所以似乎 setDefaultOperator 帮不上忙,因为它是一个实例方法。

有没有办法继续使用相同的解析器但更改了默认连接?

最佳答案

MultiFieldQueryParser类扩展了 QueryParser类(class)。也许您可以简单地配置此类的实例而不是依赖其静态方法?如果确实需要配置BooleanClause.Occur值(value)观,你可以在之后做。

String queryString = ...;
String[] fields = ...;
Analyzer analyzer = ...;

MultiFieldQueryParser queryParser = new MultiFieldQueryParser(fields, analyzer);
queryParser.setDefaultOperator(QueryParser.Operator.AND);

Query query = queryParser.parse(queryString);

// If you're not happy with MultiFieldQueryParser's default Occur (SHOULD), you can re-configure it afterward:
if (query instanceof BooleanQuery) {
BooleanClause.Occur[] flags = ...;
BooleanQuery booleanQuery = (BooleanQuery) query;
BooleanClause[] clauses = booleanQuery.getClauses();
for (int i = 0; i < clauses.length; i++) {
clauses[i].setOccur(flags[i]);
}
}

关于lucene - 如何使用 Lucene MultiFieldQueryParser 更改默认连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/977396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com