org.apache.lucene.search

## Class TermInSetQuery

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

All Implemented Interfaces:
  Accountable

    public class TermInSetQuery
    extends Query
    implements Accountable

Specialization for a disjunction over many terms that behaves like a `ConstantScoreQuery` over a `BooleanQuery` containing only `BooleanClause.Occur.SHOULD` clauses.

For instance in the following example, both `q1` and `q2` would yield the same scores:

     Query q1 = new TermInSetQuery("field", new BytesRef("foo"), new BytesRef("bar"));

     BooleanQuery bq = new BooleanQuery();
     bq.add(new TermQuery(new Term("field", "foo")), Occur.SHOULD);
     bq.add(new TermQuery(new Term("field", "bar")), Occur.SHOULD);
     Query q2 = new ConstantScoreQuery(bq);

When there are few terms, this query executes like a regular disjunction. However, when there are many terms, instead of merging iterators on the fly, it will populate a bit set with matching docs and return a `Scorer` over this bit set.

NOTE: This query produces scores that are equal to its boost

### Constructor Summary

Constructors
Constructor and Description
`TermInSetQuery(String field, BytesRef... terms)` Creates a new `TermInSetQuery` from the given array of terms.
`TermInSetQuery(String field, Collection<BytesRef> terms)` Creates a new `TermInSetQuery` from the given collection of terms.

### Method Summary

All Methods Instance Methods Concrete Methods
`Weight` `createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost)` Expert: Constructs an appropriate Weight implementation for this query.
`boolean` `equals(Object other)` Override and implement query instance equivalence properly in a subclass.
`Collection<Accountable>` `getChildResources()` Returns nested resources of this class.
`PrefixCodedTerms` `getTermData()` Returns the terms wrapped in a PrefixCodedTerms.
`int` `hashCode()` Override and implement query hash code properly in a subclass.
`long` `ramBytesUsed()` Return the memory usage of this object in bytes.
`Query` `rewrite(IndexReader reader)` Expert: called to re-write queries into primitive queries.
`String` `toString(String defaultField)` 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 org.apache.lucene.search.Query

`classHash, sameClassAs, toString`

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

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

### Constructor Detail

#### TermInSetQuery

    public TermInSetQuery(String field,
                          Collection<BytesRef> terms)

Creates a new `TermInSetQuery` from the given collection of terms.

#### TermInSetQuery

    public TermInSetQuery(String field,
                          BytesRef... terms)

Creates a new `TermInSetQuery` from the given array of terms.

### Method Detail

#### 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

#### equals

    public boolean equals(Object other)

Description copied from class: `Query`
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.

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)`

#### getTermData

    public PrefixCodedTerms getTermData()

Returns the terms wrapped in a PrefixCodedTerms.

#### toString

    public String toString(String defaultField)

Description copied from class: `Query`
Prints a query to a string, with `field` assumed to be the default field and omitted.

Specified by:
  `toString` in class `Query`

#### ramBytesUsed

    public long ramBytesUsed()

Description copied from interface: `Accountable`
Return the memory usage of this object in bytes. Negative values are illegal.

Specified by:
  `ramBytesUsed` in interface `Accountable`

#### getChildResources

    public Collection<Accountable> getChildResources()

Description copied from interface: `Accountable`
Returns nested resources of this class. The result should be a point-in-time snapshot (to avoid race conditions).

Specified by:
  `getChildResources` in interface `Accountable`
See Also:
  `Accountables`

#### 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`