0

Apache Lucene の QueryParser を使用して、用語 A または用語 B (または両方、ただし少なくとも 1 つ) を含むクエリを作成するにはどうすればよいですか。編集: また、他の MUST 句が含まれています。たとえば、C を含める必要があり、A または B のいずれかを含める必要があります。

これは正しいでしょうか?

+(A OR B) +C
4

1 に答える 1

2

それは単純です:(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: A
      • すべき: TermQuery: B
    • 必須: TermQuery: C
于 2014-11-27T14:42:07.463 に答える