Class TermRangeQuery
- java.lang.Object
-
- org.apache.lucene.search.Query
-
- org.apache.lucene.search.MultiTermQuery
-
- org.apache.lucene.search.AutomatonQuery
-
- org.apache.lucene.search.TermRangeQuery
-
- All Implemented Interfaces:
Accountable
public class TermRangeQuery extends AutomatonQuery
A Query that matches documents within an range of terms.This query matches the documents looking for terms that fall into the supplied range according to
BytesRef.compareTo(BytesRef)
.NOTE:
TermRangeQuery
performs significantly slower thanpoint-based ranges
as it needs to visit all terms that match the range and merges their matches.This query uses the
MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE
rewrite method.- Since:
- 2.9
-
-
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.AutomatonQuery
automaton, automatonIsBinary, compiled, term
-
Fields inherited from class org.apache.lucene.search.MultiTermQuery
CONSTANT_SCORE_BLENDED_REWRITE, CONSTANT_SCORE_BOOLEAN_REWRITE, CONSTANT_SCORE_REWRITE, DOC_VALUES_REWRITE, field, rewriteMethod, SCORING_BOOLEAN_REWRITE
-
Fields inherited from interface org.apache.lucene.util.Accountable
NULL_ACCOUNTABLE
-
-
Constructor Summary
Constructors Constructor Description TermRangeQuery(String field, BytesRef lowerTerm, BytesRef upperTerm, boolean includeLower, boolean includeUpper)
Constructs a query selecting all terms greater/equal thanlowerTerm
but less/equal thanupperTerm
.TermRangeQuery(String field, BytesRef lowerTerm, BytesRef upperTerm, boolean includeLower, boolean includeUpper, MultiTermQuery.RewriteMethod rewriteMethod)
Constructs a query selecting all terms greater/equal thanlowerTerm
but less/equal thanupperTerm
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object obj)
Override and implement query instance equivalence properly in a subclass.BytesRef
getLowerTerm()
Returns the lower value of this range queryBytesRef
getUpperTerm()
Returns the upper value of this range queryint
hashCode()
Override and implement query hash code properly in a subclass.boolean
includesLower()
Returnstrue
if the lower endpoint is inclusiveboolean
includesUpper()
Returnstrue
if the upper endpoint is inclusivestatic TermRangeQuery
newStringRange(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper)
Factory that creates a new TermRangeQuery using Strings for term text.static TermRangeQuery
newStringRange(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper, MultiTermQuery.RewriteMethod rewriteMethod)
Factory that creates a new TermRangeQuery using Strings for term text.static Automaton
toAutomaton(BytesRef lowerTerm, BytesRef upperTerm, boolean includeLower, boolean includeUpper)
String
toString(String field)
Prints a user-readable version of this query.-
Methods inherited from class org.apache.lucene.search.AutomatonQuery
getAutomaton, getTermsEnum, isAutomatonBinary, ramBytesUsed, visit
-
Methods inherited from class org.apache.lucene.search.MultiTermQuery
getField, getRewriteMethod, getTermsCount, getTermsEnum, rewrite, setRewriteMethod
-
Methods inherited from class org.apache.lucene.search.Query
classHash, createWeight, sameClassAs, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.lucene.util.Accountable
getChildResources
-
-
-
-
Constructor Detail
-
TermRangeQuery
public TermRangeQuery(String field, BytesRef lowerTerm, BytesRef upperTerm, boolean includeLower, boolean includeUpper)
Constructs a query selecting all terms greater/equal thanlowerTerm
but less/equal thanupperTerm
.If an endpoint is null, it is said to be "open". Either or both endpoints may be open. Open endpoints may not be exclusive (you can't select all but the first or last term without explicitly specifying the term to exclude.)
- Parameters:
field
- The field that holds both lower and upper terms.lowerTerm
- The term text at the lower end of the rangeupperTerm
- The term text at the upper end of the rangeincludeLower
- If true, thelowerTerm
is included in the range.includeUpper
- If true, theupperTerm
is included in the range.
-
TermRangeQuery
public TermRangeQuery(String field, BytesRef lowerTerm, BytesRef upperTerm, boolean includeLower, boolean includeUpper, MultiTermQuery.RewriteMethod rewriteMethod)
Constructs a query selecting all terms greater/equal thanlowerTerm
but less/equal thanupperTerm
.If an endpoint is null, it is said to be "open". Either or both endpoints may be open. Open endpoints may not be exclusive (you can't select all but the first or last term without explicitly specifying the term to exclude.)
- Parameters:
field
- The field that holds both lower and upper terms.lowerTerm
- The term text at the lower end of the rangeupperTerm
- The term text at the upper end of the rangeincludeLower
- If true, thelowerTerm
is included in the range.includeUpper
- If true, theupperTerm
is included in the range.rewriteMethod
- the rewrite method to use when building the final query
-
-
Method Detail
-
toAutomaton
public static Automaton toAutomaton(BytesRef lowerTerm, BytesRef upperTerm, boolean includeLower, boolean includeUpper)
-
newStringRange
public static TermRangeQuery newStringRange(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper)
Factory that creates a new TermRangeQuery using Strings for term text.
-
newStringRange
public static TermRangeQuery newStringRange(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper, MultiTermQuery.RewriteMethod rewriteMethod)
Factory that creates a new TermRangeQuery using Strings for term text.
-
getLowerTerm
public BytesRef getLowerTerm()
Returns the lower value of this range query
-
getUpperTerm
public BytesRef getUpperTerm()
Returns the upper value of this range query
-
includesLower
public boolean includesLower()
Returnstrue
if the lower endpoint is inclusive
-
includesUpper
public boolean includesUpper()
Returnstrue
if the upper endpoint is inclusive
-
toString
public String toString(String field)
Prints a user-readable version of this query.- Overrides:
toString
in classAutomatonQuery
-
hashCode
public int hashCode()
Description copied from class:Query
Override and implement query hash code properly in a subclass. This is required so thatQueryCache
works properly.- Overrides:
hashCode
in classAutomatonQuery
- See Also:
Query.equals(Object)
-
equals
public boolean equals(Object obj)
Description copied from class:Query
Override and implement query instance equivalence properly in a subclass. This is required so thatQueryCache
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 classAutomatonQuery
- See Also:
Query.sameClassAs(Object)
,Query.classHash()
-
-