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:
Serializable, 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 String.compareTo(String), unless a Collator is provided. 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
See Also:
Serialized Form

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, rewriteMethod, SCORING_BOOLEAN_QUERY_REWRITE
 
Constructor Summary
TermRangeQuery(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper)
          Constructs a query selecting all terms greater/equal than lowerTerm but less/equal than upperTerm.
TermRangeQuery(String field, String lowerTerm, String upperTerm, boolean includeLower, boolean includeUpper, Collator collator)
          Constructs a query selecting all terms greater/equal than lowerTerm but less/equal than upperTerm.
 
Method Summary
 boolean equals(Object obj)
           
 Collator getCollator()
          Returns the collator used to determine range inclusion, if any.
protected  FilteredTermEnum getEnum(IndexReader reader)
          Construct the enumeration to be used, expanding the pattern term.
 String getField()
          Returns the field name for this query
 String getLowerTerm()
          Returns the lower value of this range query
 String 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
 String toString(String field)
          Prints a user-readable version of this query.
 
Methods inherited from class org.apache.lucene.search.MultiTermQuery
clearTotalNumberOfTerms, getRewriteMethod, getTotalNumberOfTerms, incTotalNumberOfTerms, rewrite, setRewriteMethod
 
Methods inherited from class org.apache.lucene.search.Query
clone, combine, createWeight, extractTerms, getBoost, getSimilarity, mergeBooleanQueries, setBoost, toString, weight
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TermRangeQuery

public TermRangeQuery(String field,
                      String lowerTerm,
                      String 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.

TermRangeQuery

public TermRangeQuery(String field,
                      String lowerTerm,
                      String upperTerm,
                      boolean includeLower,
                      boolean includeUpper,
                      Collator collator)
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.)

If collator is not null, it will be used to decide whether index terms are within the given range, rather than using the Unicode code point order in which index terms are stored.

WARNING: Using this constructor and supplying a non-null value in the collator parameter will cause every single index Term in the Field referenced by lowerTerm and/or upperTerm to be examined. Depending on the number of index Terms in this Field, the operation could be very slow.

Parameters:
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.
collator - The collator to use to collate index Terms, to determine their membership in the range bounded by lowerTerm and upperTerm.
Method Detail

getField

public String getField()
Returns the field name for this query


getLowerTerm

public String getLowerTerm()
Returns the lower value of this range query


getUpperTerm

public String 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


getCollator

public Collator getCollator()
Returns the collator used to determine range inclusion, if any.


getEnum

protected FilteredTermEnum getEnum(IndexReader reader)
                            throws IOException
Description copied from class: MultiTermQuery
Construct the enumeration to be used, expanding the pattern term.

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