Package org.apache.lucene.document

## Class DoubleRange

- java.lang.Object
- - org.apache.lucene.document.Field
  - - org.apache.lucene.document.DoubleRange

- All Implemented Interfaces:
    `IndexableField`

      public class DoubleRange
      extends Field

  An indexed Double 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 double 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 `Double.NEGATIVE_INFINITY` and `Double.POSITIVE_INFINITY`.

  This field defines the following static factory methods for common search operations over double 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

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static int` | `BYTES` | stores double values so number of bytes is 8

    - ### Fields inherited from class org.apache.lucene.document.Field

      `fieldsData, name, tokenStream, type`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DoubleRange​(String name, double[] min, double[] max)` | Create a new DoubleRange type, from min/max parallel arrays

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `double` | `getMax​(int dimension)` | Get the max value for the given dimension
    `double` | `getMin​(int dimension)` | Get the min value for the given dimension
    `static Query` | `newContainsQuery​(String field, double[] min, double[] max)` | Create a query for matching indexed ranges that contain the defined range.
    `static Query` | `newCrossesQuery​(String field, double[] min, double[] max)` | Create a query for matching indexed ranges that cross the defined range.
    `static Query` | `newIntersectsQuery​(String field, double[] min, double[] max)` | Create a query for matching indexed ranges that intersect the defined range.
    `static Query` | `newWithinQuery​(String field, double[] min, double[] max)` | Create a query for matching indexed ranges that are within the defined range.
    `void` | `setRangeValues​(double[] min, double[] max)` | Changes the values of the field.
    `String` | `toString()` | Prints a Field for human consumption.
    `static void` | `verifyAndEncode​(double[] min, double[] max, byte[] bytes)` | encode the ranges into a sortable byte array (`Double.NaN` not allowed)

    - ### 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`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### BYTES

          public static final int BYTES

      stores double values so number of bytes is 8
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### DoubleRange

          public DoubleRange​(String name,
                             double[] min,
                             double[] max)

      Create a new DoubleRange 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 dimension
        `max` - range max values; each entry is the max value for the dimension

  - ### Method Detail

    - #### setRangeValues

          public void setRangeValues​(double[] min,
                                     double[] max)

      Changes the values of the field.
      Parameters:
        `min` - array of min values. (accepts `Double.NEGATIVE_INFINITY`)
        `max` - array of max values. (accepts `Double.POSITIVE_INFINITY`)
      Throws:
        `IllegalArgumentException` - if `min` or `max` is invalid

    - #### verifyAndEncode

          public static void verifyAndEncode​(double[] min,
                                             double[] max,
                                             byte[] bytes)

      encode the ranges into a sortable byte array (`Double.NaN` not allowed)

      example for 4 dimensions (8 bytes per dimension value): minD1 ... minD4 | maxD1 ... maxD4

    - #### getMin

          public double getMin​(int dimension)

      Get the min value for the given dimension
      Parameters:
        `dimension` - the dimension, always positive
      Returns:
        the decoded min value

    - #### getMax

          public double getMax​(int dimension)

      Get the max value for the given dimension
      Parameters:
        `dimension` - the dimension, always positive
      Returns:
        the decoded max value

    - #### newIntersectsQuery

          public static Query newIntersectsQuery​(String field,
                                                 double[] min,
                                                 double[] max)

      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. (accepts `Double.NEGATIVE_INFINITY`)
        `max` - array of max values. (accepts `Double.POSITIVE_INFINITY`)
      Returns:
        query for matching intersecting ranges (overlap, within, or contains)
      Throws:
        `IllegalArgumentException` - if `field` is null, `min` or `max` is invalid

    - #### newContainsQuery

          public static Query newContainsQuery​(String field,
                                               double[] min,
                                               double[] max)

      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. (accepts `Double.MIN_VALUE`)
        `max` - array of max values. (accepts `Double.MAX_VALUE`)
      Returns:
        query for matching ranges that contain the defined range
      Throws:
        `IllegalArgumentException` - if `field` is null, `min` or `max` is invalid

    - #### newWithinQuery

          public static Query newWithinQuery​(String field,
                                             double[] min,
                                             double[] max)

      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. (accepts `Double.MIN_VALUE`)
        `max` - array of max values. (accepts `Double.MAX_VALUE`)
      Returns:
        query for matching ranges within the defined range
      Throws:
        `IllegalArgumentException` - if `field` is null, `min` or `max` is invalid

    - #### newCrossesQuery

          public static Query newCrossesQuery​(String field,
                                              double[] min,
                                              double[] max)

      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. (accepts `Double.MIN_VALUE`)
        `max` - array of max values. (accepts `Double.MAX_VALUE`)
      Returns:
        query for matching ranges within the defined range
      Throws:
        `IllegalArgumentException` - if `field` is null, `min` or `max` is invalid

    - #### toString

          public String toString()

      Description copied from class: `Field`
      Prints a Field for human consumption.
      Overrides:
        `toString` in class `Field`