org.apache.lucene.search

## Class BooleanQuery

- java.lang.Object
- - org.apache.lucene.search.Query
  - - org.apache.lucene.search.BooleanQuery

All Implemented Interfaces:
  Iterable<BooleanClause>

    public class BooleanQuery
    extends Query
    implements Iterable<BooleanClause>

A Query that matches documents matching boolean combinations of other queries, e.g. `TermQuery`s, `PhraseQuery`s or other BooleanQuerys.

### Nested Class Summary

Nested Classes
`static class` `BooleanQuery.Builder` A builder for boolean queries.
`static class` `BooleanQuery.TooManyClauses` Thrown when an attempt is made to add more than `getMaxClauseCount()` clauses.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`List<BooleanClause>` `clauses()` Return a list of the clauses of this `BooleanQuery`.
`Weight` `createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost)` Expert: Constructs an appropriate Weight implementation for this query.
`boolean` `equals(Object o)` Compares the specified object with this boolean query for equality.
`static int` `getMaxClauseCount()` Return the maximum number of clauses permitted, 1024 by default.
`int` `getMinimumNumberShouldMatch()` Gets the minimum number of the optional BooleanClauses which must be satisfied.
`int` `hashCode()` Override and implement query hash code properly in a subclass.
`Iterator<BooleanClause>` `iterator()` Returns an iterator on the clauses in this query.
`Query` `rewrite(IndexReader reader)` Expert: called to re-write queries into primitive queries.
`static void` `setMaxClauseCount(int maxClauseCount)` Set the maximum number of clauses permitted per BooleanQuery.
`String` `toString(String field)` Prints a user-readable version of this query.
`void` `visit(QueryVisitor visitor)` Recurse through the query tree, visiting any child queries

### Methods inherited from class org.apache.lucene.search.Query

`classHash, sameClassAs, toString`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.lang.Iterable

`forEach, spliterator`

### Method Detail

#### getMaxClauseCount

    public static int getMaxClauseCount()

Return the maximum number of clauses permitted, 1024 by default. Attempts to add more than the permitted number of clauses cause `BooleanQuery.TooManyClauses` to be thrown.

See Also:
  `setMaxClauseCount(int)`

#### setMaxClauseCount

    public static void setMaxClauseCount(int maxClauseCount)

Set the maximum number of clauses permitted per BooleanQuery. Default value is 1024.

#### getMinimumNumberShouldMatch

    public int getMinimumNumberShouldMatch()

Gets the minimum number of the optional BooleanClauses which must be satisfied.

#### clauses

    public List<BooleanClause> clauses()

Return a list of the clauses of this `BooleanQuery`.

#### iterator

    public final Iterator<BooleanClause> iterator()

Returns an iterator on the clauses in this query. It implements the `Iterable` interface to make it possible to do:

    for (BooleanClause clause : booleanQuery) {}

Specified by:
  `iterator` in interface `Iterable<BooleanClause>`

#### createWeight

    public Weight createWeight(IndexSearcher searcher,
                               ScoreMode scoreMode,
                               float boost)
                        throws IOException

Description copied from class: `Query`
Expert: Constructs an appropriate Weight implementation for this query.

Only implemented by primitive queries, which re-write to themselves.

Overrides:
  `createWeight` in class `Query`
  `scoreMode` - How the produced scorers will be consumed.
  `boost` - The boost that is propagated by the parent queries.
Throws:
  `IOException`

#### rewrite

    public Query rewrite(IndexReader reader)
                  throws IOException

Description copied from class: `Query`
Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.

Overrides:
  `rewrite` in class `Query`
Throws:
  `IOException`

#### visit

    public void visit(QueryVisitor visitor)

Description copied from class: `Query`
Recurse through the query tree, visiting any child queries

Overrides:
  `visit` in class `Query`
Parameters:
  `visitor` - a QueryVisitor to be called by each query in the tree

#### toString

    public String toString(String field)

Prints a user-readable version of this query.

Specified by:
  `toString` in class `Query`

#### equals

    public boolean equals(Object o)

Compares the specified object with this boolean query for equality. Returns true if and only if the provided object

- is also a `BooleanQuery`,
- has the same value of `getMinimumNumberShouldMatch()`
- has the same `BooleanClause.Occur.SHOULD` clauses, regardless of the order
- has the same `BooleanClause.Occur.MUST` clauses, regardless of the order
- has the same set of `BooleanClause.Occur.FILTER` clauses, regardless of the order and regardless of duplicates
- has the same set of `BooleanClause.Occur.MUST_NOT` clauses, regardless of the order and regardless of duplicates

Specified by:
  `equals` in class `Query`
See Also:
  `Query.sameClassAs(Object)`, `Query.classHash()`

#### hashCode

    public int hashCode()

Description copied from class: `Query`
Override and implement query hash code properly in a subclass. This is required so that `QueryCache` works properly.

Specified by:
  `hashCode` in class `Query`
See Also:
  `Query.equals(Object)`