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 Details

  • Method Details

    • 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
      Specified by:
      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:
    • 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:
    • 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:
    • 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