Class DoublePoint
- All Implemented Interfaces:
IndexableField
double
field for fast range filters. If you also need to store the value, you
should add a separate StoredField
instance.
Finding all documents within an N-dimensional shape or range at search time is efficient. Multiple values for the same field in one document is allowed.
This field defines static factory methods for creating common queries:
newExactQuery(String, double)
for matching an exact 1D point.newSetQuery(String, double...)
for matching a set of 1D values.newRangeQuery(String, double, double)
for matching a 1D range.newRangeQuery(String, double[], double[])
for matching points/ranges in n-dimensional space.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.lucene.document.Field
Field.Store
-
Field Summary
Fields inherited from class org.apache.lucene.document.Field
fieldsData, name, tokenStream, type
-
Constructor Summary
ConstructorsConstructorDescriptionDoublePoint
(String name, double... point) Creates a new DoublePoint, indexing the provided N-dimensional double point. -
Method Summary
Modifier and TypeMethodDescriptionstatic double
decodeDimension
(byte[] value, int offset) Decode single double dimensionstatic void
encodeDimension
(double value, byte[] dest, int offset) Encode single double dimensionstatic Query
newExactQuery
(String field, double value) Create a query for matching an exact double value.static Query
newRangeQuery
(String field, double[] lowerValue, double[] upperValue) Create a range query for n-dimensional double values.static Query
newRangeQuery
(String field, double lowerValue, double upperValue) Create a range query for double values.static Query
newSetQuery
(String field, double... values) Create a query matching any of the specified 1D values.static Query
newSetQuery
(String field, Collection<Double> values) Create a query matching any of the specified 1D values.static double
nextDown
(double d) Return the greatest double that compares less thand
consistently withDouble.compare(double, double)
.static double
nextUp
(double d) Return the least double that compares greater thand
consistently withDouble.compare(double, double)
.Non-null if this field has a numeric valuestatic BytesRef
pack
(double... point) Pack a double point into a BytesRefvoid
setBytesValue
(BytesRef bytes) Expert: change the value of this field.void
setDoubleValue
(double value) Expert: change the value of this field.void
setDoubleValues
(double... point) Change the values of this fieldtoString()
Prints a Field for human consumption.Methods inherited from class org.apache.lucene.document.Field
binaryValue, fieldType, getCharSequenceValue, name, readerValue, setBytesValue, setByteValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, setTokenStream, stringValue, tokenStream, tokenStreamValue
-
Constructor Details
-
DoublePoint
Creates a new DoublePoint, indexing the provided N-dimensional double point.- Parameters:
name
- field namepoint
- double[] value- Throws:
IllegalArgumentException
- if the field name or value is null.
-
-
Method Details
-
nextUp
public static double nextUp(double d) Return the least double that compares greater thand
consistently withDouble.compare(double, double)
. The only difference withMath.nextUp(double)
is that this method returns+0d
when the argument is-0d
. -
nextDown
public static double nextDown(double d) Return the greatest double that compares less thand
consistently withDouble.compare(double, double)
. The only difference withMath.nextDown(double)
is that this method returns-0d
when the argument is+0d
. -
setDoubleValue
public void setDoubleValue(double value) Description copied from class:Field
Expert: change the value of this field. SeeField.setStringValue(String)
.- Overrides:
setDoubleValue
in classField
-
setDoubleValues
public void setDoubleValues(double... point) Change the values of this field -
setBytesValue
Description copied from class:Field
Expert: change the value of this field. SeeField.setStringValue(String)
.NOTE: the provided BytesRef is not copied so be sure not to change it until you're done with this field.
- Overrides:
setBytesValue
in classField
-
numericValue
Description copied from interface:IndexableField
Non-null if this field has a numeric value- Specified by:
numericValue
in interfaceIndexableField
- Overrides:
numericValue
in classField
-
pack
Pack a double point into a BytesRef- Parameters:
point
- double[] value- Throws:
IllegalArgumentException
- is the value is null or of zero length
-
toString
Description copied from class:Field
Prints a Field for human consumption. -
encodeDimension
public static void encodeDimension(double value, byte[] dest, int offset) Encode single double dimension -
decodeDimension
public static double decodeDimension(byte[] value, int offset) Decode single double dimension -
newExactQuery
Create a query for matching an exact double value.This is for simple one-dimension points, for multidimensional points use
newRangeQuery(String, double[], double[])
instead.- Parameters:
field
- field name. must not benull
.value
- double value- Returns:
- a query matching documents with this exact value
- Throws:
IllegalArgumentException
- iffield
is null.
-
newRangeQuery
Create a range query for double values.This is for simple one-dimension ranges, for multidimensional ranges use
newRangeQuery(String, double[], double[])
instead.You can have half-open ranges (which are in fact </≤ or >/≥ queries) by setting
lowerValue = Double.NEGATIVE_INFINITY
orupperValue = Double.POSITIVE_INFINITY
.Ranges are inclusive. For exclusive ranges, pass
nextUp(lowerValue)
ornextDown(upperValue)
.Range comparisons are consistent with
Double.compareTo(Double)
.- Parameters:
field
- field name. must not benull
.lowerValue
- lower portion of the range (inclusive).upperValue
- upper portion of the range (inclusive).- Returns:
- a query matching documents within this range.
- Throws:
IllegalArgumentException
- iffield
is null.
-
newRangeQuery
Create a range query for n-dimensional double values.You can have half-open ranges (which are in fact </≤ or >/≥ queries) by setting
lowerValue[i] = Double.NEGATIVE_INFINITY
orupperValue[i] = Double.POSITIVE_INFINITY
.Ranges are inclusive. For exclusive ranges, pass
Math#nextUp(lowerValue[i])
orMath.nextDown(upperValue[i])
.Range comparisons are consistent with
Double.compareTo(Double)
.- Parameters:
field
- field name. must not benull
.lowerValue
- lower portion of the range (inclusive). must not benull
.upperValue
- upper portion of the range (inclusive). must not benull
.- Returns:
- a query matching documents within this range.
- Throws:
IllegalArgumentException
- iffield
is null, iflowerValue
is null, ifupperValue
is null, or iflowerValue.length != upperValue.length
-
newSetQuery
Create a query matching any of the specified 1D values. This is the points equivalent ofTermsQuery
.- Parameters:
field
- field name. must not benull
.values
- all values to match
-
newSetQuery
Create a query matching any of the specified 1D values. This is the points equivalent ofTermsQuery
.- Parameters:
field
- field name. must not benull
.values
- all values to match
-