Package org.apache.lucene.sandbox.document

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

- `newExactQuery(String, BigInteger)` for matching an exact 1D point.
- `newSetQuery(String, BigInteger...)` for matching a set of 1D values.
- `newRangeQuery(String, BigInteger, BigInteger)` for matching a 1D range.
- `newRangeQuery(String, BigInteger[], BigInteger[])` for matching points/ranges in n-dimensional space.

See Also:
  - `PointValues`

- ## 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 final int`
  `BYTES`
  The number of bytes per dimension: 128 bits.
  `static final BigInteger`
  `MAX_VALUE`
  A constant holding the maximum value a BigIntegerPoint can have, 2127-1.
  `static final BigInteger`
  `MIN_VALUE`
  A constant holding the minimum value a BigIntegerPoint can have, -2127.

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

  `fieldsData, name, type`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BigIntegerPoint(String name, BigInteger... point)`
  Creates a new BigIntegerPoint, indexing the provided N-dimensional big integer point.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static BigInteger`
  `decodeDimension(byte[] value, int offset)`
  Decode single BigInteger dimension
  `static void`
  `encodeDimension(BigInteger value, byte[] dest, int offset)`
  Encode single BigInteger dimension
  `static Query`
  `newExactQuery(String field, BigInteger value)`
  Create a query for matching an exact big integer value.
  `static Query`
  `newRangeQuery(String field, BigInteger[] lowerValue, BigInteger[] upperValue)`
  Create a range query for n-dimensional big integer values.
  `static Query`
  `newRangeQuery(String field, BigInteger lowerValue, BigInteger upperValue)`
  Create a range query for big integer values.
  `static Query`
  `newSetQuery(String field, BigInteger... values)`
  Create a query matching any of the specified 1D values.
  `Number`
  `numericValue()`
  `static BytesRef`
  `pack(BigInteger... point)`
  `void`
  `setBigIntegerValues(BigInteger... point)`
  Change the values of this field
  `void`
  `setBytesValue(BytesRef bytes)`
  `String`
  `toString()`

  ### Methods inherited from class org.apache.lucene.document.Field

  `binaryValue, fieldType, getCharSequenceValue, invertableType, name, readerValue, 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 Details

  - ### BYTES

    public static final int BYTES
    The number of bytes per dimension: 128 bits.
    See Also:
      - Constant Field Values

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

  - ### pack

    public static BytesRef pack(BigInteger... point)

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