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-document long 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.

  • Field Details

    • TYPE

      public static final FieldType TYPE
      Type for sorted numeric DocValues.
  • Constructor Details

    • SortedNumericDocValuesField

      public SortedNumericDocValuesField(String name, long value)
      Creates a new DocValues field with the specified 64-bit long value
      Parameters:
      name - field name
      value - 64-bit long value
      Throws:
      IllegalArgumentException - if the field name is null
  • Method Details

    • newSlowRangeQuery

      public static Query newSlowRangeQuery(String field, long lowerValue, long upperValue)
      Create a range query that matches all documents whose value is between lowerValue and upperValue included.

      You can have half-open ranges (which are in fact </≤ or >/≥ queries) by setting lowerValue = Long.MIN_VALUE or upperValue = Long.MAX_VALUE.

      Ranges are inclusive. For exclusive ranges, pass Math.addExact(lowerValue, 1) or Math.addExact(upperValue, -1).

      This query also works with fields that have indexed NumericDocValuesFields.

      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 as LongPoint.newRangeQuery(java.lang.String, long, 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 NumericDocValuesFields.

      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 as LongPoint.newExactQuery(java.lang.String, long).