Package org.apache.lucene.document
Class IntRange
java.lang.Object
org.apache.lucene.document.Field
org.apache.lucene.document.IntRange
- All Implemented Interfaces:
IndexableField
An indexed Integer Range field.
This field indexes dimensional ranges defined as min/max pairs. It supports up to a maximum of 4 dimensions (indexed as 8 numeric values). With 1 dimension representing a single integer range, 2 dimensions representing a bounding box, 3 dimensions a bounding cube, and 4 dimensions a tesseract.
Multiple values for the same field in one document is supported, and open ended ranges can be
defined using Integer.MIN_VALUE
and Integer.MAX_VALUE
.
This field defines the following static factory methods for common search operations over integer ranges:
newIntersectsQuery()
matches ranges that intersect the defined search range.newWithinQuery()
matches ranges that are within the defined search range.newContainsQuery()
matches ranges that contain the defined search range.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.lucene.document.Field
Field.Store
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
stores integer values so number of bytes is 4Fields inherited from class org.apache.lucene.document.Field
fieldsData, name, type
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
getMax
(int dimension) Get the max value for the given dimensionint
getMin
(int dimension) Get the min value for the given dimensionstatic Query
newContainsQuery
(String field, int[] min, int[] max) Create a query for matching indexed ranges that contain the defined range.static Query
newCrossesQuery
(String field, int[] min, int[] max) Create a query for matching indexed ranges that cross the defined range.static Query
newIntersectsQuery
(String field, int[] min, int[] max) Create a query for matching indexed ranges that intersect the defined range.static Query
newWithinQuery
(String field, int[] min, int[] max) Create a query for matching indexed ranges that are within the defined range.void
setRangeValues
(int[] min, int[] max) Changes the values of the field.toString()
Prints a Field for human consumption.Methods inherited from class org.apache.lucene.document.Field
binaryValue, fieldType, getCharSequenceValue, invertableType, name, numericValue, readerValue, setBytesValue, setBytesValue, setByteValue, setDoubleValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, setTokenStream, storedValue, stringValue, tokenStream, tokenStreamValue
-
Field Details
-
BYTES
public static final int BYTESstores integer values so number of bytes is 4- See Also:
-
-
Constructor Details
-
IntRange
Create a new IntRange type, from min/max parallel arrays- Parameters:
name
- field name. must not be null.min
- range min values; each entry is the min value for the dimensionmax
- range max values; each entry is the max value for the dimension
-
-
Method Details
-
setRangeValues
public void setRangeValues(int[] min, int[] max) Changes the values of the field.- Parameters:
min
- array of min values. (acceptsInteger.NEGATIVE_INFINITY
)max
- array of max values. (acceptsInteger.POSITIVE_INFINITY
)- Throws:
IllegalArgumentException
- ifmin
ormax
is invalid
-
getMin
public int getMin(int dimension) Get the min value for the given dimension- Parameters:
dimension
- the dimension, always positive- Returns:
- the decoded min value
-
getMax
public int getMax(int dimension) Get the max value for the given dimension- Parameters:
dimension
- the dimension, always positive- Returns:
- the decoded max value
-
newIntersectsQuery
Create a query for matching indexed ranges that intersect the defined range.- Parameters:
field
- field name. must not be null.min
- array of min values. (acceptsInteger.MIN_VALUE
)max
- array of max values. (acceptsInteger.MAX_VALUE
)- Returns:
- query for matching intersecting ranges (overlap, within, or contains)
- Throws:
IllegalArgumentException
- iffield
is null,min
ormax
is invalid
-
newContainsQuery
Create a query for matching indexed ranges that contain the defined range.- Parameters:
field
- field name. must not be null.min
- array of min values. (acceptsInteger.MIN_VALUE
)max
- array of max values. (acceptsInteger.MAX_VALUE
)- Returns:
- query for matching ranges that contain the defined range
- Throws:
IllegalArgumentException
- iffield
is null,min
ormax
is invalid
-
newWithinQuery
Create a query for matching indexed ranges that are within the defined range.- Parameters:
field
- field name. must not be null.min
- array of min values. (acceptsInteger.MIN_VALUE
)max
- array of max values. (acceptsInteger.MAX_VALUE
)- Returns:
- query for matching ranges within the defined range
- Throws:
IllegalArgumentException
- iffield
is null,min
ormax
is invalid
-
newCrossesQuery
Create a query for matching indexed ranges that cross the defined range. A CROSSES is defined as any set of ranges that are not disjoint and not wholly contained by the query. Effectively, its the complement of union(WITHIN, DISJOINT).- Parameters:
field
- field name. must not be null.min
- array of min values. (acceptsInteger.MIN_VALUE
)max
- array of max values. (acceptsInteger.MAX_VALUE
)- Returns:
- query for matching ranges within the defined range
- Throws:
IllegalArgumentException
- iffield
is null,min
ormax
is invalid
-
toString
Description copied from class:Field
Prints a Field for human consumption.
-