Package org.apache.lucene.codecs

## Class KnnVectorsReader

- java.lang.Object
- - org.apache.lucene.codecs.KnnVectorsReader

- All Implemented Interfaces:
    `Closeable`, `AutoCloseable`, `Accountable`
  Direct Known Subclasses:
    `Lucene99HnswVectorsReader`, `PerFieldKnnVectorsFormat.FieldsReader`

      public abstract class KnnVectorsReader
      extends Object
      implements Closeable, Accountable

  Reads vectors from an index.

- - ### Field Summary

    - ### Fields inherited from interface org.apache.lucene.util.Accountable

      `NULL_ACCOUNTABLE`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `KnnVectorsReader()` | Sole constructor

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract void` | `checkIntegrity()` | Checks consistency of this reader.
    `abstract ByteVectorValues` | `getByteVectorValues​(String field)` | Returns the `ByteVectorValues` for the given `field`.
    `abstract FloatVectorValues` | `getFloatVectorValues​(String field)` | Returns the `FloatVectorValues` for the given `field`.
    `KnnVectorsReader` | `getMergeInstance()` | Returns an instance optimized for merging.
    `abstract void` | `search​(String field, byte[] target, KnnCollector knnCollector, Bits acceptDocs)` | Return the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function.
    `abstract void` | `search​(String field, float[] target, KnnCollector knnCollector, Bits acceptDocs)` | Return the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function.

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.lucene.util.Accountable

      `getChildResources, ramBytesUsed`

    - ### Methods inherited from interface java.io.Closeable

      `close`

- - ### Constructor Detail

    - #### KnnVectorsReader

          protected KnnVectorsReader()

      Sole constructor

  - ### Method Detail

    - #### checkIntegrity

          public abstract void checkIntegrity()
                                       throws IOException

      Checks consistency of this reader.

      Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value against large data files.

      Throws:
        `IOException`
      NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

    - #### getFloatVectorValues

          public abstract FloatVectorValues getFloatVectorValues​(String field)
                                                          throws IOException

      Returns the `FloatVectorValues` for the given `field`. The behavior is undefined if the given field doesn't have KNN vectors enabled on its `FieldInfo`. The return value is never `null`.
      Throws:
        `IOException`

    - #### getByteVectorValues

          public abstract ByteVectorValues getByteVectorValues​(String field)
                                                        throws IOException

      Returns the `ByteVectorValues` for the given `field`. The behavior is undefined if the given field doesn't have KNN vectors enabled on its `FieldInfo`. The return value is never `null`.
      Throws:
        `IOException`

    - #### search

          public abstract void search​(String field,
                                      float[] target,
                                      KnnCollector knnCollector,
                                      Bits acceptDocs)
                               throws IOException

      Return the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function. The score of each document is derived from the vector similarity in a way that ensures scores are positive and that a larger score corresponds to a higher ranking.

      The search is allowed to be approximate, meaning the results are not guaranteed to be the true k closest neighbors. For large values of k (for example when k is close to the total number of documents), the search may also retrieve fewer than k documents.

      The returned `TopDocs` will contain a `ScoreDoc` for each nearest neighbor, in order of their similarity to the query vector (decreasing scores). The `TotalHits` contains the number of documents visited during the search. If the search stopped early because it hit `visitedLimit`, it is indicated through the relation `TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO`.

      The behavior is undefined if the given field doesn't have KNN vectors enabled on its `FieldInfo`. The return value is never `null`.

      Parameters:
        `field` - the vector field to search
        `target` - the vector-valued query
        `knnCollector` - a KnnResults collector and relevant settings for gathering vector results
        `acceptDocs` - `Bits` that represents the allowed documents to match, or `null` if they are all allowed to match.
      Throws:
        `IOException`

    - #### search

          public abstract void search​(String field,
                                      byte[] target,
                                      KnnCollector knnCollector,
                                      Bits acceptDocs)
                               throws IOException

      Return the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function. The score of each document is derived from the vector similarity in a way that ensures scores are positive and that a larger score corresponds to a higher ranking.

      The search is allowed to be approximate, meaning the results are not guaranteed to be the true k closest neighbors. For large values of k (for example when k is close to the total number of documents), the search may also retrieve fewer than k documents.

      The returned `TopDocs` will contain a `ScoreDoc` for each nearest neighbor, in order of their similarity to the query vector (decreasing scores). The `TotalHits` contains the number of documents visited during the search. If the search stopped early because it hit `visitedLimit`, it is indicated through the relation `TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO`.

      The behavior is undefined if the given field doesn't have KNN vectors enabled on its `FieldInfo`. The return value is never `null`.

      Parameters:
        `field` - the vector field to search
        `target` - the vector-valued query
        `knnCollector` - a KnnResults collector and relevant settings for gathering vector results
        `acceptDocs` - `Bits` that represents the allowed documents to match, or `null` if they are all allowed to match.
      Throws:
        `IOException`

    - #### getMergeInstance

          public KnnVectorsReader getMergeInstance()

      Returns an instance optimized for merging. This instance may only be consumed in the thread that called `getMergeInstance()`.

      The default implementation returns `this`