org.apache.lucene.search
Class TermRangeQuery

java.lang.Object
  extended by org.apache.lucene.search.Query
      extended by org.apache.lucene.search.MultiTermQuery
          extended by org.apache.lucene.search.TermRangeQuery
All Implemented Interfaces:
Cloneable

public class TermRangeQuery
extends MultiTermQuery

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 Byte.compareTo(Byte). It is not intended for numerical ranges; use NumericRangeQuery instead.

This query uses the MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT rewrite method.

Since:
2.9

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.lucene.search.MultiTermQuery
MultiTermQuery.ConstantScoreAutoRewrite, MultiTermQuery.RewriteMethod, MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite, MultiTermQuery.TopTermsScoringBooleanQueryRewrite
 
Field Summary
 
Fields inherited from class org.apache.lucene.search.MultiTermQuery
CONSTANT_SCORE_AUTO_REWRITE_DEFAULT, CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE, CONSTANT_SCORE_FILTER_REWRITE, field, rewriteMethod, SCORING_BOOLEAN_QUERY_REWRITE
 
Constructor Summary
TermRangeQuery(String field, BytesRef lowerTerm, BytesRef upperTerm, boolean includeLower, boolean includeUpper)
          Constructs a query selecting all terms greater/equal than lowerTerm but less/equal than upperTerm.
 
Method Summary
 boolean equals(Object obj)
           
 BytesRef getLowerTerm()
          Returns the lower value of this range query
protected  TermsEnum getTermsEnum(Terms terms, AttributeSource atts)
          Construct the enumeration to be used, expanding the pattern term.
 BytesRef getUpperTerm()
          Returns the upper value of this range query
 int hashCode()
           
 boolean includesLower()
          Returns true if the lower endpoint is inclusive
 boolean includesUpper()
          Returns true if the upper endpoint is inclusive
static TermRangeQuery newStringRange(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper)
          Factory that creates a new TermRangeQuery using Strings for term text.
 String toString(String field)
          Prints a user-readable version of this query.
 
Methods inherited from class org.apache.lucene.search.MultiTermQuery
getField, getRewriteMethod, getTermsEnum, rewrite, setRewriteMethod
 
Methods inherited from class org.apache.lucene.search.Query
clone, createWeight, extractTerms, getBoost, setBoost, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TermRangeQuery

public TermRangeQuery(String field,
                      BytesRef lowerTerm,
                      BytesRef upperTerm,
                      boolean includeLower,
                      boolean includeUpper)
Constructs a query selecting all terms greater/equal than lowerTerm but less/equal than upperTerm.

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 range
upperTerm - The term text at the upper end of the range
includeLower - If true, the lowerTerm is included in the range.
includeUpper - If true, the upperTerm is included in the range.
Method Detail

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.


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()
Returns true if the lower endpoint is inclusive


includesUpper

public boolean includesUpper()
Returns true if the upper endpoint is inclusive


getTermsEnum

protected TermsEnum getTermsEnum(Terms terms,
                                 AttributeSource atts)
                          throws IOException
Description copied from class: MultiTermQuery
Construct 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 return TermsEnum.EMPTY if no terms match). The TermsEnum must already be positioned to the first matching term. The given AttributeSource is passed by the MultiTermQuery.RewriteMethod to provide attributes, the rewrite method uses to inform about e.g. maximum competitive boosts. This is currently only used by TopTermsRewrite

Specified by:
getTermsEnum in class MultiTermQuery
Throws:
IOException

toString

public String toString(String field)
Prints a user-readable version of this query.

Specified by:
toString in class Query

hashCode

public int hashCode()
Overrides:
hashCode in class MultiTermQuery

equals

public boolean equals(Object obj)
Overrides:
equals in class MultiTermQuery


Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.