1

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)

1 つ以上の使用可能なフィールド (fieldA、fieldB) に両方の単語 (hello AND stackoverflow) を含むこれらのドキュメントのみを取得する AND クエリを取得するにはどうすればよいですか?

ありがとう!- PyLucene 4.8.0、Python 2.7 64 ビット

4

2 に答える 2

1

一連MultiFieldQueryParser.parseの引数を取るメソッドはすべてstaticです。クエリ パーサー インスタンスとそれに対して行った操作は、まったく存在しない可能性があります。次のようなものがあります。

query = MultiFieldQueryParser.parse(Version.LUCENE_CURRENT, query, fields, clauses, analyzer)

クエリパーサーのparseインスタンスを使用するときに必要なのは、 string を受け取るだけのものです

fields = ["FieldA", "FieldB"]
query = "hello stackoverflow"

parser = MultiFieldQueryParser(Version.LUCENE_CURRENT, fields, analyzer)
parser.setDefaultOperator(QueryParserBase.AND_OPERATOR)
query = parser.parse(query)
于 2014-11-10T22:13:04.230 に答える
0
searcher = IndexSearcher(reader)
analyzer = WhitespaceAnalyzer(Version.LATEST)
fields = ('a', 'b', 'c')
parser = MultiFieldQueryParser(fields, analyzer)
query = parser.parser(query)
results = searcher.search(query,10)
于 2015-03-09T02:23:30.490 に答える