Apache Lucene の QueryParser を使用して、用語 A または用語 B (または両方、ただし少なくとも 1 つ) を含むクエリを作成するにはどうすればよいですか。編集: また、他の MUST 句が含まれています。たとえば、C を含める必要があり、A または B のいずれかを含める必要があります。
これは正しいでしょうか?
+(A OR B) +C
Apache Lucene の QueryParser を使用して、用語 A または用語 B (または両方、ただし少なくとも 1 つ) を含むクエリを作成するにはどうすればよいですか。編集: また、他の MUST 句が含まれています。たとえば、C を含める必要があり、A または B のいずれかを含める必要があります。
これは正しいでしょうか?
+(A OR B) +C
それは単純です:(A OR B
または単にA B
)
BooleanClause
これにより、 で 2 つのが生成されOccur.SHOULD
ます。BooleanQuery
この場合、全体が一致するには、少なくとも 1 つの句が一致する必要があります。
/** Use this operator for clauses that <i>should</i> appear in the
* matching documents. For a BooleanQuery with no <code>MUST</code>
* clauses one or more <code>SHOULD</code> clauses must match a document
* for the BooleanQuery to match.
* @see BooleanQuery#setMinimumNumberShouldMatch
*/
SHOULD { @Override public String toString() { return ""; } },
更新された質問への回答:
(A OR B) AND C
あなたがしたいことをするべきです。
うまく+(A OR B) +C
いくように見えるのでよくわかり+(A OR B)
ませんが、元の質問で期待したようにうまくいかないと述べました。
QueryParser
確認するために、何が生成されるかを確認できます。この種のクエリ構造が必要になります。
BooleanQuery
BooleanQuery
TermQuery
: ATermQuery
: BTermQuery
: C