|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.lucene.search.Filter org.apache.lucene.search.FieldCacheRangeFilter<T>
public abstract class FieldCacheRangeFilter<T>
A range filter built on top of a cached single term field (in FieldCache
).
FieldCacheRangeFilter
builds a single cache for the field the first time it is used.
Each subsequent FieldCacheRangeFilter
on the same field then reuses this cache,
even if the range itself changes.
This means that FieldCacheRangeFilter
is much faster (sometimes more than 100x as fast)
as building a TermRangeFilter
, if using a newStringRange(java.lang.String, java.lang.String, java.lang.String, boolean, boolean)
.
However, if the range never changes it is slower (around 2x as slow) than building
a CachingWrapperFilter on top of a single TermRangeFilter
.
For numeric data types, this filter may be significantly faster than NumericRangeFilter
.
Furthermore, it does not need the numeric values encoded by NumericField
. But
it has the problem that it only works with exact one value/document (see below).
As with all FieldCache
based functionality, FieldCacheRangeFilter
is only valid for
fields which exact one term for each document (except for newStringRange(java.lang.String, java.lang.String, java.lang.String, boolean, boolean)
where 0 terms are also allowed). Due to a restriction of FieldCache
, for numeric ranges
all terms that do not have a numeric value, 0 is assumed.
Thus it works on dates, prices and other single value fields but will not work on
regular text fields. It is preferable to use a NOT_ANALYZED
field to ensure that
there is only a single term.
This class does not have an constructor, use one of the static factory methods available,
that create a correct instance for different data types supported by FieldCache
.
Method Summary | |
---|---|
boolean |
equals(Object o)
|
abstract DocIdSet |
getDocIdSet(IndexReader reader)
This method is implemented for each data type |
String |
getField()
Returns the field name for this filter |
T |
getLowerVal()
Returns the lower value of this range filter |
FieldCache.Parser |
getParser()
Returns the current numeric parser ( null for T is String } |
T |
getUpperVal()
Returns the upper value of this range filter |
int |
hashCode()
|
boolean |
includesLower()
Returns true if the lower endpoint is inclusive |
boolean |
includesUpper()
Returns true if the upper endpoint is inclusive |
static FieldCacheRangeFilter<Byte> |
newByteRange(String field,
Byte lowerVal,
Byte upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getBytes(IndexReader,String) . |
static FieldCacheRangeFilter<Byte> |
newByteRange(String field,
FieldCache.ByteParser parser,
Byte lowerVal,
Byte upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getBytes(IndexReader,String,FieldCache.ByteParser) . |
static FieldCacheRangeFilter<Double> |
newDoubleRange(String field,
Double lowerVal,
Double upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getDoubles(IndexReader,String) . |
static FieldCacheRangeFilter<Double> |
newDoubleRange(String field,
FieldCache.DoubleParser parser,
Double lowerVal,
Double upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getDoubles(IndexReader,String,FieldCache.DoubleParser) . |
static FieldCacheRangeFilter<Float> |
newFloatRange(String field,
FieldCache.FloatParser parser,
Float lowerVal,
Float upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getFloats(IndexReader,String,FieldCache.FloatParser) . |
static FieldCacheRangeFilter<Float> |
newFloatRange(String field,
Float lowerVal,
Float upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getFloats(IndexReader,String) . |
static FieldCacheRangeFilter<Integer> |
newIntRange(String field,
FieldCache.IntParser parser,
Integer lowerVal,
Integer upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getInts(IndexReader,String,FieldCache.IntParser) . |
static FieldCacheRangeFilter<Integer> |
newIntRange(String field,
Integer lowerVal,
Integer upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getInts(IndexReader,String) . |
static FieldCacheRangeFilter<Long> |
newLongRange(String field,
FieldCache.LongParser parser,
Long lowerVal,
Long upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getLongs(IndexReader,String,FieldCache.LongParser) . |
static FieldCacheRangeFilter<Long> |
newLongRange(String field,
Long lowerVal,
Long upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getLongs(IndexReader,String) . |
static FieldCacheRangeFilter<Short> |
newShortRange(String field,
FieldCache.ShortParser parser,
Short lowerVal,
Short upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getShorts(IndexReader,String,FieldCache.ShortParser) . |
static FieldCacheRangeFilter<Short> |
newShortRange(String field,
Short lowerVal,
Short upperVal,
boolean includeLower,
boolean includeUpper)
Creates a numeric range filter using FieldCache.getShorts(IndexReader,String) . |
static FieldCacheRangeFilter<String> |
newStringRange(String field,
String lowerVal,
String upperVal,
boolean includeLower,
boolean includeUpper)
Creates a string range filter using FieldCache.getStringIndex(org.apache.lucene.index.IndexReader, java.lang.String) . |
String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Method Detail |
---|
public abstract DocIdSet getDocIdSet(IndexReader reader) throws IOException
getDocIdSet
in class Filter
reader
- a IndexReader
instance opened on the index currently
searched on. Note, it is likely that the provided reader does not
represent the whole underlying index i.e. if the index has more than
one segment the given reader only represents a single segment.
IOException
DocIdBitSet
public static FieldCacheRangeFilter<String> newStringRange(String field, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getStringIndex(org.apache.lucene.index.IndexReader, java.lang.String)
. This works with all
fields containing zero or one term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Byte> newByteRange(String field, Byte lowerVal, Byte upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getBytes(IndexReader,String)
. This works with all
byte fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Byte> newByteRange(String field, FieldCache.ByteParser parser, Byte lowerVal, Byte upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getBytes(IndexReader,String,FieldCache.ByteParser)
. This works with all
byte fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Short> newShortRange(String field, Short lowerVal, Short upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getShorts(IndexReader,String)
. This works with all
short fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Short> newShortRange(String field, FieldCache.ShortParser parser, Short lowerVal, Short upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getShorts(IndexReader,String,FieldCache.ShortParser)
. This works with all
short fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Integer> newIntRange(String field, Integer lowerVal, Integer upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getInts(IndexReader,String)
. This works with all
int fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Integer> newIntRange(String field, FieldCache.IntParser parser, Integer lowerVal, Integer upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getInts(IndexReader,String,FieldCache.IntParser)
. This works with all
int fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Long> newLongRange(String field, Long lowerVal, Long upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getLongs(IndexReader,String)
. This works with all
long fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Long> newLongRange(String field, FieldCache.LongParser parser, Long lowerVal, Long upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getLongs(IndexReader,String,FieldCache.LongParser)
. This works with all
long fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Float> newFloatRange(String field, Float lowerVal, Float upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getFloats(IndexReader,String)
. This works with all
float fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Float> newFloatRange(String field, FieldCache.FloatParser parser, Float lowerVal, Float upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getFloats(IndexReader,String,FieldCache.FloatParser)
. This works with all
float fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Double> newDoubleRange(String field, Double lowerVal, Double upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getDoubles(IndexReader,String)
. This works with all
double fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public static FieldCacheRangeFilter<Double> newDoubleRange(String field, FieldCache.DoubleParser parser, Double lowerVal, Double upperVal, boolean includeLower, boolean includeUpper)
FieldCache.getDoubles(IndexReader,String,FieldCache.DoubleParser)
. This works with all
double fields containing exactly one numeric term in the field. The range can be half-open by setting one
of the values to null
.
public final String toString()
toString
in class Object
public final boolean equals(Object o)
equals
in class Object
public final int hashCode()
hashCode
in class Object
public String getField()
public boolean includesLower()
true
if the lower endpoint is inclusive
public boolean includesUpper()
true
if the upper endpoint is inclusive
public T getLowerVal()
public T getUpperVal()
public FieldCache.Parser getParser()
null
for T
is String
}
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |