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