org.apache.lucene.search

## Class Query

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

Direct Known Subclasses:
  BlendedTermQuery, BooleanQuery, BoostQuery, ConstantScoreQuery, DisjunctionMaxQuery, DocValuesFieldExistsQuery, IndexOrDocValuesQuery, LatLonDocValuesPointInPolygonQuery, MatchAllDocsQuery, MatchNoDocsQuery, MultiPhraseQuery, MultiTermQuery, NGramPhraseQuery, NormsFieldExistsQuery, PhraseQuery, PointInSetQuery, PointRangeQuery, SpanQuery, SynonymQuery, TermInSetQuery, TermQuery

    public abstract class Query
    extends Object

The abstract base class for queries.

Instantiable subclasses are:

- `TermQuery`
- `BooleanQuery`
- `WildcardQuery`
- `PhraseQuery`
- `PrefixQuery`
- `MultiPhraseQuery`
- `FuzzyQuery`
- `RegexpQuery`
- `TermRangeQuery`
- `PointRangeQuery`
- `ConstantScoreQuery`
- `DisjunctionMaxQuery`
- `MatchAllDocsQuery`

See also the family of `Span Queries` and additional queries available in the Queries module

### Constructor Summary

Constructors
Constructor and Description
`Query()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`protected int` `classHash()` Provides a constant integer for a given class, derived from the name of the class.
`Weight` `createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost)` Expert: Constructs an appropriate Weight implementation for this query.
`abstract boolean` `equals(Object obj)` Override and implement query instance equivalence properly in a subclass.
`abstract int` `hashCode()` Override and implement query hash code properly in a subclass.
`Query` `rewrite(IndexReader reader)` Expert: called to re-write queries into primitive queries.
`protected boolean` `sameClassAs(Object other)` Utility method to check whether `other` is not null and is exactly of the same class as this object's class.
`String` `toString()` Prints a query to a string.
`abstract String` `toString(String field)` Prints a query to a string, with `field` assumed to be the default field and omitted.
`void` `visit(QueryVisitor visitor)` Recurse through the query tree, visiting any child queries

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

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

### Constructor Detail

#### Query

    public Query()

### Method Detail

#### toString

    public abstract String toString(String field)

Prints a query to a string, with `field` assumed to be the default field and omitted.

#### toString

    public final String toString()

Prints a query to a string.

Overrides:
  `toString` in class `Object`

#### createWeight

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

Expert: Constructs an appropriate Weight implementation for this query.

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

Parameters:
  `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

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

Throws:
  `IOException`

#### visit

    public void visit(QueryVisitor visitor)

Recurse through the query tree, visiting any child queries

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

#### equals

    public abstract boolean equals(Object obj)

Override and implement query instance equivalence properly in a subclass. This is required so that `QueryCache` works properly. Typically a query will be equal to another only if it's an instance of the same class and its document-filtering properties are identical that other instance. Utility methods are provided for certain repetitive code.

Overrides:
  `equals` in class `Object`
See Also:
  `sameClassAs(Object)`, `classHash()`

#### hashCode

    public abstract int hashCode()

Override and implement query hash code properly in a subclass. This is required so that `QueryCache` works properly.

Overrides:
  `hashCode` in class `Object`
See Also:
  `equals(Object)`

#### sameClassAs

    protected final boolean sameClassAs(Object other)

Utility method to check whether `other` is not null and is exactly of the same class as this object's class. When this method is used in an implementation of `equals(Object)`, consider using `classHash()` in the implementation of `hashCode()` to differentiate different class

#### classHash

    protected final int classHash()

Provides a constant integer for a given class, derived from the name of the class. The rationale for not using just `Object.hashCode()` is that classes may be assigned different hash codes for each execution and we want hashes to be possibly consistent to facilitate debugging.