Class BigIntegerPoint

java.lang.Object
org.apache.lucene.document.Field
org.apache.lucene.sandbox.document.BigIntegerPoint
All Implemented Interfaces:
IndexableField

public class BigIntegerPoint extends Field
An indexed 128-bit BigInteger field.

Finding all documents within an N-dimensional shape or range at search time is efficient. Multiple values for the same field in one document is allowed.

This field defines static factory methods for creating common queries:

See Also:
  • Field Details

    • BYTES

      public static final int BYTES
      The number of bytes per dimension: 128 bits.
      See Also:
    • MIN_VALUE

      public static final BigInteger MIN_VALUE
      A constant holding the minimum value a BigIntegerPoint can have, -2127.
    • MAX_VALUE

      public static final BigInteger MAX_VALUE
      A constant holding the maximum value a BigIntegerPoint can have, 2127-1.
  • Constructor Details

    • BigIntegerPoint

      public BigIntegerPoint(String name, BigInteger... point)
      Creates a new BigIntegerPoint, indexing the provided N-dimensional big integer point.
      Parameters:
      name - field name
      point - BigInteger[] value
      Throws:
      IllegalArgumentException - if the field name or value is null.
  • Method Details

    • setBigIntegerValues

      public void setBigIntegerValues(BigInteger... point)
      Change the values of this field
    • setBytesValue

      public void setBytesValue(BytesRef bytes)
      Overrides:
      setBytesValue in class Field
    • numericValue

      public Number numericValue()
      Specified by:
      numericValue in interface IndexableField
      Overrides:
      numericValue in class Field
    • toString

      public String toString()
      Overrides:
      toString in class Field
    • encodeDimension

      public static void encodeDimension(BigInteger value, byte[] dest, int offset)
      Encode single BigInteger dimension
    • decodeDimension

      public static BigInteger decodeDimension(byte[] value, int offset)
      Decode single BigInteger dimension
    • newExactQuery

      public static Query newExactQuery(String field, BigInteger value)
      Create a query for matching an exact big integer value.

      This is for simple one-dimension points, for multidimensional points use newRangeQuery(String, BigInteger[], BigInteger[]) instead.

      Parameters:
      field - field name. must not be null.
      value - exact value. must not be null.
      Returns:
      a query matching documents with this exact value
      Throws:
      IllegalArgumentException - if field is null or value is null.
    • newRangeQuery

      public static Query newRangeQuery(String field, BigInteger lowerValue, BigInteger upperValue)
      Create a range query for big integer values.

      This is for simple one-dimension ranges, for multidimensional ranges use newRangeQuery(String, BigInteger[], BigInteger[]) instead.

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

      Ranges are inclusive. For exclusive ranges, pass lowerValue.add(BigInteger.ONE) or upperValue.subtract(BigInteger.ONE)

      Parameters:
      field - field name. must not be null.
      lowerValue - lower portion of the range (inclusive). must not be null.
      upperValue - upper portion of the range (inclusive). must not be null.
      Returns:
      a query matching documents within this range.
      Throws:
      IllegalArgumentException - if field is null, lowerValue is null, or upperValue is null.
    • newRangeQuery

      public static Query newRangeQuery(String field, BigInteger[] lowerValue, BigInteger[] upperValue)
      Create a range query for n-dimensional big integer values.

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

      Ranges are inclusive. For exclusive ranges, pass lowerValue[i].add(BigInteger.ONE) or upperValue[i].subtract(BigInteger.ONE)

      Parameters:
      field - field name. must not be null.
      lowerValue - lower portion of the range (inclusive). must not be null.
      upperValue - upper portion of the range (inclusive). must not be null.
      Returns:
      a query matching documents within this range.
      Throws:
      IllegalArgumentException - if field is null, if lowerValue is null, if upperValue is null, or if lowerValue.length != upperValue.length
    • newSetQuery

      public static Query newSetQuery(String field, BigInteger... values)
      Create a query matching any of the specified 1D values. This is the points equivalent of TermsQuery.
      Parameters:
      field - field name. must not be null.
      values - all values to match