Class LongRange

  • All Implemented Interfaces:
    IndexableField

    public class LongRange
    extends Field
    An indexed Long 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 long 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 Long.MIN_VALUE and Long.MAX_VALUE.

    This field defines the following static factory methods for common search operations over long ranges:

    • Field Detail

      • BYTES

        public static final int BYTES
        stores long values so number of bytes is 8
        See Also:
        Constant Field Values
    • Constructor Detail

      • LongRange

        public LongRange​(String name,
                         long[] min,
                         long[] max)
        Create a new LongRange 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​(long[] min,
                                   long[] max)
        Changes the values of the field.
        Parameters:
        min - array of min values. (accepts Long.MIN_VALUE)
        max - array of max values. (accepts Long.MAX_VALUE)
        Throws:
        IllegalArgumentException - if min or max is invalid
      • getMin

        public long getMin​(int dimension)
        Get the min value for the given dimension
        Parameters:
        dimension - the dimension, always positive
        Returns:
        the decoded min value
      • getMax

        public long 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,
                                               long[] min,
                                               long[] 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 Long.MIN_VALUE)
        max - array of max values. (accepts Long.MAX_VALUE)
        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,
                                             long[] min,
                                             long[] 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 Long.MIN_VALUE)
        max - array of max values. (accepts Long.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,
                                           long[] min,
                                           long[] 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 Long.MIN_VALUE)
        max - array of max values. (accepts Long.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,
                                            long[] min,
                                            long[] 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 Long.MIN_VALUE)
        max - array of max values. (accepts Long.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