Package org.apache.lucene.search

# Class PointRangeQuery

java.lang.Object
org.apache.lucene.search.Query
org.apache.lucene.search.PointRangeQuery

public abstract class PointRangeQuery extends Query
Abstract class for range queries against single or multidimensional points such as `IntPoint`.

This is for subclasses and works on the underlying binary encoding: to create range queries for lucene's standard `Point` types, refer to factory methods on those classes, e.g. `IntPoint.newRangeQuery()` for fields indexed with `IntPoint`.

For a single-dimensional field this query is a simple range query; in a multi-dimensional field it's a box shape.

See Also:
  - `PointValues`
WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `PointRangeQuery(String field, byte[] lowerPoint, byte[] upperPoint, int numDims)`
  Expert: create a multidimensional range query for point values.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static void`
  `checkArgs(String field, Object lowerPoint, Object upperPoint)`
  Check preconditions for all factory methods
  `final Weight`
  `createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost)`
  Expert: Constructs an appropriate Weight implementation for this query.
  `final boolean`
  `equals(Object o)`
  Override and implement query instance equivalence properly in a subclass.
  `int`
  `getBytesPerDim()`
  `String`
  `getField()`
  `byte[]`
  `getLowerPoint()`
  `int`
  `getNumDims()`
  `byte[]`
  `getUpperPoint()`
  `final int`
  `hashCode()`
  Override and implement query hash code properly in a subclass.
  `Query`
  `rewrite(IndexSearcher searcher)`
  Expert: called to re-write queries into primitive queries.
  `protected abstract String`
  `toString(int dimension, byte[] value)`
  Returns a string of a single value in a human-readable format for debugging.
  `final String`
  `toString(String field)`
  Prints a query to a string, with `field` assumed to be the default field and omitted.
  `void`
  `visit(QueryVisitor visitor)`
  Recurse through the query tree, visiting any child queries.

  ### Methods inherited from class org.apache.lucene.search.Query

  `classHash, sameClassAs, toString`

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

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

- ## Constructor Details

  - ### PointRangeQuery

    protected PointRangeQuery(String field, byte[] lowerPoint, byte[] upperPoint, int numDims)
    Expert: create a multidimensional range query for point values.
    Parameters:
      `field` - field name. must not be `null`.
      `lowerPoint` - lower portion of the range (inclusive).
      `upperPoint` - upper portion of the range (inclusive).
      `numDims` - number of dimensions.
    Throws:
      `IllegalArgumentException` - if `field` is null, or if `lowerValue.length != upperValue.length`

- ## Method Details

  - ### checkArgs

    public static void checkArgs(String field, Object lowerPoint, Object upperPoint)
    Check preconditions for all factory methods
    Throws:
      `IllegalArgumentException` - if `field`, `lowerPoint` or `upperPoint` are null.

  - ### visit

    public void visit(QueryVisitor visitor)
    Description copied from class: `Query`
    Recurse through the query tree, visiting any child queries.
    Specified by:
      `visit` in class `Query`
    Parameters:
      `visitor` - a QueryVisitor to be called by each query in the tree

  - ### createWeight

    public final Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException
    Description copied from class: `Query`
    Expert: Constructs an appropriate Weight implementation for this query.

    Only implemented by primitive queries, which re-write to themselves.

    Overrides:
      `createWeight` in class `Query`
    Parameters:
      `scoreMode` - How the produced scorers will be consumed.
      `boost` - The boost that is propagated by the parent queries.
    Throws:
      `IOException`

  - ### getField

    public String getField()

  - ### getNumDims

    public int getNumDims()

  - ### getBytesPerDim

    public int getBytesPerDim()

  - ### getLowerPoint

    public byte[] getLowerPoint()

  - ### getUpperPoint

    public byte[] getUpperPoint()

  - ### hashCode

    public final int hashCode()
    Description copied from class: `Query`
    Override and implement query hash code properly in a subclass. This is required so that `QueryCache` works properly.
    Specified by:
      `hashCode` in class `Query`
    See Also:
      - `Query.equals(Object)`

  - ### equals

    public final boolean equals(Object o)
    Description copied from class: `Query`
    Override and implement query instance equivalence properly in a subclass. This is required so that `QueryCache` works properly.

    Typically a query will be equal to another only if it's an instance of the same class and its document-filtering properties are identical to those of the other instance. Utility methods are provided for certain repetitive code.

    Specified by:
      `equals` in class `Query`
    See Also:
      - `Query.sameClassAs(Object)`
      - `Query.classHash()`

  - ### toString

    public final String toString(String field)
    Description copied from class: `Query`
    Prints a query to a string, with `field` assumed to be the default field and omitted.
    Specified by:
      `toString` in class `Query`

  - ### toString

    protected abstract String toString(int dimension, byte[] value)
    Returns a string of a single value in a human-readable format for debugging. This is used by `Query.toString()`.
    Parameters:
      `dimension` - dimension of the particular value
      `value` - single value, never null
    Returns:
      human readable value for debugging

  - ### rewrite

    public Query rewrite(IndexSearcher searcher) throws IOException
    Description copied from class: `Query`
    Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.

    Callers are expected to call `rewrite` multiple times if necessary, until the rewritten query is the same as the original query.

    The rewrite process may be able to make use of IndexSearcher's executor and be executed in parallel if the executor is provided.

    Overrides:
      `rewrite` in class `Query`
    Throws:
      `IOException`
    See Also:
      - `IndexSearcher.rewrite(Query)`