Class TermInSetQuery
- java.lang.Object
-
- org.apache.lucene.search.Query
-
- org.apache.lucene.search.MultiTermQuery
-
- org.apache.lucene.search.TermInSetQuery
-
- All Implemented Interfaces:
Accountable
public class TermInSetQuery extends MultiTermQuery implements Accountable
Specialization for a disjunction over many terms that, by default, behaves like aConstantScoreQueryover aBooleanQuerycontaining onlyBooleanClause.Occur.SHOULDclauses.For instance in the following example, both
q1andq2would 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);Unless a custom
MultiTermQuery.RewriteMethodis provided, this query executes like a regular disjunction where there are few terms. However, when there are many terms, instead of merging iterators on the fly, it will populate a bit set with matching docs for the least-costly terms and maintain a size-limited set of more costly iterators that are merged on the fly. For more details, seeMultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE.Users may also provide a custom
MultiTermQuery.RewriteMethodto define different execution behavior, such as relying on doc values (see:MultiTermQuery.DOC_VALUES_REWRITE), or if scores are required (see:MultiTermQuery.SCORING_BOOLEAN_REWRITE). SeeMultiTermQuerydocumentation for more rewrite options.NOTE: This query produces scores that are equal to its boost
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.search.MultiTermQuery
MultiTermQuery.RewriteMethod, MultiTermQuery.TopTermsBlendedFreqScoringRewrite, MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite, MultiTermQuery.TopTermsScoringBooleanQueryRewrite
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.search.MultiTermQuery
CONSTANT_SCORE_BLENDED_REWRITE, CONSTANT_SCORE_BOOLEAN_REWRITE, CONSTANT_SCORE_REWRITE, DOC_VALUES_REWRITE, rewriteMethod, SCORING_BOOLEAN_REWRITE
-
Fields inherited from interface org.apache.lucene.util.Accountable
NULL_ACCOUNTABLE
-
-
Constructor Summary
Constructors Constructor Description TermInSetQuery(String field, Collection<BytesRef> terms)TermInSetQuery(String field, BytesRef... terms)Deprecated.UseTermInSetQuery(String, Collection)instead.TermInSetQuery(MultiTermQuery.RewriteMethod rewriteMethod, String field, Collection<BytesRef> terms)Creates a newTermInSetQueryfrom the given collection of terms.TermInSetQuery(MultiTermQuery.RewriteMethod rewriteMethod, String field, BytesRef... terms)Deprecated.UseTermInSetQuery(RewriteMethod, String, Collection)instead.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description booleanequals(Object other)Override and implement query instance equivalence properly in a subclass.BytesRefIteratorgetBytesRefIterator()Get an iterator over the encoded terms for query inspection.Collection<Accountable>getChildResources()Returns nested resources of this class.PrefixCodedTermsgetTermData()Deprecated.the encoded terms will no longer be exposed in a future major version; this is an implementation detail that could change at some point and shouldn't be relied on directly.longgetTermsCount()Return the number of unique terms contained in this query, if known up-front.protected TermsEnumgetTermsEnum(Terms terms, AttributeSource atts)Construct the enumeration to be used, expanding the pattern term.inthashCode()Override and implement query hash code properly in a subclass.longramBytesUsed()Return the memory usage of this object in bytes.StringtoString(String defaultField)Prints a query to a string, withfieldassumed to be the default field and omitted.voidvisit(QueryVisitor visitor)Recurse through the query tree, visiting any child queries.-
Methods inherited from class org.apache.lucene.search.MultiTermQuery
getField, getRewriteMethod, getTermsEnum, rewrite, setRewriteMethod
-
Methods inherited from class org.apache.lucene.search.Query
classHash, createWeight, rewrite, sameClassAs, toString
-
-
-
-
Constructor Detail
-
TermInSetQuery
public TermInSetQuery(String field, Collection<BytesRef> terms)
-
TermInSetQuery
@Deprecated(since="9.10") public TermInSetQuery(String field, BytesRef... terms)
Deprecated.UseTermInSetQuery(String, Collection)instead.
-
TermInSetQuery
public TermInSetQuery(MultiTermQuery.RewriteMethod rewriteMethod, String field, Collection<BytesRef> terms)
Creates a newTermInSetQueryfrom the given collection of terms.
-
TermInSetQuery
@Deprecated(since="9.10") public TermInSetQuery(MultiTermQuery.RewriteMethod rewriteMethod, String field, BytesRef... terms)
Deprecated.UseTermInSetQuery(RewriteMethod, String, Collection)instead.Creates a newTermInSetQueryfrom the given array of terms.
-
-
Method Detail
-
getTermsCount
public long getTermsCount() throws IOExceptionDescription copied from class:MultiTermQueryReturn the number of unique terms contained in this query, if known up-front. If not known, -1 will be returned.- Overrides:
getTermsCountin classMultiTermQuery- Throws:
IOException
-
getBytesRefIterator
public BytesRefIterator getBytesRefIterator()
Get an iterator over the encoded terms for query inspection.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
visit
public void visit(QueryVisitor visitor)
Description copied from class:QueryRecurse through the query tree, visiting any child queries.
-
equals
public boolean equals(Object other)
Description copied from class:QueryOverride and implement query instance equivalence properly in a subclass. This is required so thatQueryCacheworks 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 to those of the other instance. Utility methods are provided for certain repetitive code.
- Overrides:
equalsin classMultiTermQuery- See Also:
Query.sameClassAs(Object),Query.classHash()
-
hashCode
public int hashCode()
Description copied from class:QueryOverride and implement query hash code properly in a subclass. This is required so thatQueryCacheworks properly.- Overrides:
hashCodein classMultiTermQuery- See Also:
Query.equals(Object)
-
getTermData
@Deprecated public PrefixCodedTerms getTermData()
Deprecated.the encoded terms will no longer be exposed in a future major version; this is an implementation detail that could change at some point and shouldn't be relied on directly. CallgetBytesRefIterator()instead to retrieve over the terms.Returns the terms wrapped in a PrefixCodedTerms.
-
toString
public String toString(String defaultField)
Description copied from class:QueryPrints a query to a string, withfieldassumed to be the default field and omitted.
-
ramBytesUsed
public long ramBytesUsed()
Description copied from interface:AccountableReturn the memory usage of this object in bytes. Negative values are illegal.- Specified by:
ramBytesUsedin interfaceAccountable
-
getChildResources
public Collection<Accountable> getChildResources()
Description copied from interface:AccountableReturns nested resources of this class. The result should be a point-in-time snapshot (to avoid race conditions).- Specified by:
getChildResourcesin interfaceAccountable- See Also:
Accountables
-
getTermsEnum
protected TermsEnum getTermsEnum(Terms terms, AttributeSource atts) throws IOException
Description copied from class:MultiTermQueryConstruct the enumeration to be used, expanding the pattern term. This method should only be called if the field exists (ie, implementations can assume the field does exist). This method should not return null (should instead returnTermsEnum.EMPTYif no terms match). The TermsEnum must already be positioned to the first matching term. The givenAttributeSourceis passed by theMultiTermQuery.RewriteMethodto share information between segments, for exampleTopTermsRewriteuses it to share maximum competitive boosts- Specified by:
getTermsEnumin classMultiTermQuery- Throws:
IOException
-
-