Class LongRange

java.lang.Object
org.apache.lucene.document.Field
org.apache.lucene.document.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 Details

    • BYTES

      public static final int BYTES
      stores long values so number of bytes is 8
      See Also:
  • Constructor Details

    • 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 Details

    • 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