Lucene';s MultiFieldQueryParser忽略setDefaultOperator

Lucene';s MultiFieldQueryParser忽略setDefaultOperator,lucene,pylucene,Lucene,Pylucene,我正在尝试更改MultiFieldQueryParser的默认运算符: fields = [...] query = "hello stackoverflow" clauses = [BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD, ...] parser = MultiFieldQueryParser(Version.LUCENE_CURRENT, fields, analyzer) parser.setDefaultOperat

我正在尝试更改MultiFieldQueryParser的默认运算符:

fields = [...]
query = "hello stackoverflow"
clauses = [BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD, ...]

parser = MultiFieldQueryParser(Version.LUCENE_CURRENT, fields, analyzer)
parser.setDefaultOperator(QueryParserBase.AND_OPERATOR)
query = parser.parse(Version.LUCENE_CURRENT, query, fields, clauses, analyzer)
结果查询是:

(FieldA:hello FieldA:stackoverflow) (FieldB:hello FieldB:stackoverflow)
如何获取AND查询以仅检索在一个或多个可用字段(fieldA、fieldB)中同时包含单词(hello和stackoverflow)的文档


谢谢PyLucene 4.8.0、Python2.7 64位

那些接受大量参数的
多字段QueryParser.parse方法都是静态的。查询解析器实例以及您对其所做的任何操作都可能根本不存在,您所拥有的相当于:

query=multifiedqueryparser.parse(Version.LUCENE\u当前,查询,字段,子句,分析器)
使用查询解析器实例时,所需的
parse

fields=[“FieldA”,“FieldB”]
query=“hello stackoverflow”
parser=MultiFieldQueryParser(Version.LUCENE_CURRENT,fields,analyzer)
解析器.setDefaultOperator(QueryParserBase.AND_运算符)
query=parser.parse(查询)

PyLucene的方法绑定似乎被破坏了,我得到一个错误,说“描述符解析需要一个QueryParserBase对象,但收到了一个str”。当我像query=multifiedqueryparser.parse(parser,query)那样调用它时,它就像一个charme。非常感谢。MultiFieldQueryParser(lucene版本8.1.1)第284行的getMultiFieldQuery方法看起来可疑。我不得不切换Boolean子句。从应该发生到必须得到和行为。
searcher = IndexSearcher(reader)
analyzer = WhitespaceAnalyzer(Version.LATEST)
fields = ('a', 'b', 'c')
parser = MultiFieldQueryParser(fields, analyzer)
query = parser.parser(query)
results = searcher.search(query,10)