Class TermRangeQuery
- All Implemented Interfaces:
Accountable
This query matches the documents looking for terms that fall into the supplied range according
to BytesRef.compareTo(BytesRef)
.
NOTE: TermRangeQuery
performs significantly slower than point-based ranges
as it needs to visit all terms that match the range and merges their matches.
This query uses the MultiTermQuery.CONSTANT_SCORE_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_BOOLEAN_REWRITE, CONSTANT_SCORE_REWRITE, field, rewriteMethod, SCORING_BOOLEAN_REWRITE
Fields inherited from interface org.apache.lucene.util.Accountable
NULL_ACCOUNTABLE
-
Constructor Summary
ConstructorDescriptionTermRangeQuery
(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
Modifier and TypeMethodDescriptionboolean
Override and implement query instance equivalence properly in a subclass.Returns the lower value of this range queryReturns the upper value of this range queryint
hashCode()
Override and implement query hash code properly in a subclass.boolean
Returnstrue
if the lower endpoint is inclusiveboolean
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) 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, 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 Details
-
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 Details
-
toAutomaton
-
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
Returns the lower value of this range query -
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
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:
-
equals
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:
-