Boolean queries
BooleanQuery combines clauses with Occur:
| Occur | Description |
|---|---|
Must |
Required |
Should |
Optional; increases relevance |
MustNot |
Exclude |
Builder
var query = new BooleanQuery.Builder()
.Add(new TermQuery("title", "fox"), Occur.Must)
.Add(new TermQuery("title", "quick"), Occur.Should)
.Add(new TermQuery("title", "lazy"), Occur.MustNot)
.Build();
Fluent builder
var query = new BooleanQueryBuilder()
.Must(new TermQuery("title", "fox"))
.Should(new TermQuery("title", "quick"))
.MustNot(new TermQuery("title", "lazy"))
.Build();
Pure filter mode
A BooleanQuery with only MustNot clauses matches everything that passes the exclusions. Wrap in ConstantScoreQuery to skip BM25:
var filter = new ConstantScoreQuery(
new BooleanQuery.Builder()
.Add(new TermQuery("status", "draft"), Occur.MustNot)
.Build(),
score: 0f);