In the same spirit as
LUCENE-6531 for the PhraseQuery, we should make BooleanQuery immutable.
The plan is the following:
- create BooleanQuery.Builder with the same setters as BooleanQuery today (except setBoost) and a build() method that returns a BooleanQuery
- remove setters from BooleanQuery (except setBoost)
I would also like to add some static utility methods for common use-cases of this query, for instance:
- static BooleanQuery disjunction(Query... queries) to create a disjunction
- static BooleanQuery conjunction(Query... queries) to create a conjunction
- static BooleanQuery filtered(Query query, Query... filters) to create a filtered query
Hopefully this will help keep tests not too verbose, and the latter will also help with the FilteredQuery derecation/removal.