Class SortedNumericDocValuesField
- java.lang.Object
-
- org.apache.lucene.document.Field
-
- org.apache.lucene.document.SortedNumericDocValuesField
-
- All Implemented Interfaces:
IndexableField
public class SortedNumericDocValuesField extends Field
Field that stores a per-documentlong
values for scoring, sorting or value retrieval. Here's an example usage:document.add(new SortedNumericDocValuesField(name, 5L)); document.add(new SortedNumericDocValuesField(name, 14L));
Note that if you want to encode doubles or floats with proper sort order, you will need to encode them with
NumericUtils
:document.add(new SortedNumericDocValuesField(name, NumericUtils.floatToSortableInt(-5.3f)));
If you also need to store the value, you should add a separate
StoredField
instance.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.document.Field
Field.Store
-
-
Field Summary
Fields Modifier and Type Field Description static FieldType
TYPE
Type for sorted numeric DocValues.-
Fields inherited from class org.apache.lucene.document.Field
fieldsData, name, tokenStream, type
-
-
Constructor Summary
Constructors Constructor Description SortedNumericDocValuesField(String name, long value)
Creates a new DocValues field with the specified 64-bit long value
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Query
newSlowExactQuery(String field, long value)
Create a query for matching an exact long value.static Query
newSlowRangeQuery(String field, long lowerValue, long upperValue)
Create a range query that matches all documents whose value is betweenlowerValue
andupperValue
included.static Query
newSlowSetQuery(String field, long... values)
Create a query matching any of the specified values.-
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, toString
-
-
-
-
Field Detail
-
TYPE
public static final FieldType TYPE
Type for sorted numeric DocValues.
-
-
Constructor Detail
-
SortedNumericDocValuesField
public SortedNumericDocValuesField(String name, long value)
Creates a new DocValues field with the specified 64-bit long value- Parameters:
name
- field namevalue
- 64-bit long value- Throws:
IllegalArgumentException
- if the field name is null
-
-
Method Detail
-
newSlowRangeQuery
public static Query newSlowRangeQuery(String field, long lowerValue, long upperValue)
Create a range query that matches all documents whose value is betweenlowerValue
andupperValue
included.You can have half-open ranges (which are in fact </≤ or >/≥ queries) by setting
lowerValue = Long.MIN_VALUE
orupperValue = Long.MAX_VALUE
.Ranges are inclusive. For exclusive ranges, pass
Math.addExact(lowerValue, 1)
orMath.addExact(upperValue, -1)
.This query also works with fields that have indexed
NumericDocValuesField
s.NOTE: Such queries cannot efficiently advance to the next match, which makes them slow if they are not ANDed with a selective query. As a consequence, they are best used wrapped in an
IndexOrDocValuesQuery
, alongside a range query that executes on points, such asLongPoint.newRangeQuery(java.lang.String, long, long)
.
-
newSlowSetQuery
public static Query newSlowSetQuery(String field, long... values)
Create a query matching any of the specified values.NOTE: Such queries cannot efficiently advance to the next match, which makes them slow if they are not ANDed with a selective query. As a consequence, they are best used wrapped in an
IndexOrDocValuesQuery
, alongside a set query that executes on points, such asLongPoint.newSetQuery(java.lang.String, long...)
.
-
newSlowExactQuery
public static Query newSlowExactQuery(String field, long value)
Create a query for matching an exact long value.This query also works with fields that have indexed
NumericDocValuesField
s.NOTE: Such queries cannot efficiently advance to the next match, which makes them slow if they are not ANDed with a selective query. As a consequence, they are best used wrapped in an
IndexOrDocValuesQuery
, alongside a range query that executes on points, such asLongPoint.newExactQuery(java.lang.String, long)
.
-
-