如何使用来自Apache Lucene的QueryParser来查询包含术语A或术语B(或两者,但至少包含其中一个)的查询。 编辑:此外,它包含其他必须条款,例如,它必须包含C,并且必须包含A或B.
这是正确的吗?
+(A OR B) +C
答案 0 :(得分:2)
只是:A OR B
(或只是A B
)
这将生成两个BooleanClause
个Occur.SHOULD
。在这种情况下,至少有一个子句必须匹配整个BooleanQuery
才能匹配:
/** 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)
在你原来的问题中没有像你期望的那样工作。< / p>
为确保您可以查看QueryParser
生成的内容。您需要这种查询结构:
BooleanQuery
BooleanQuery
TermQuery
: A TermQuery
: B TermQuery
: C