Class 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 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 name
        value - 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 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).