Class Lucene99FlatVectorsReader

All Implemented Interfaces:
Closeable, AutoCloseable, Accountable

public final class Lucene99FlatVectorsReader extends FlatVectorsReader
Reads vectors from the index segments.
WARNING: This API is experimental and might change in incompatible ways in the next release.
  • Constructor Details

  • Method Details

    • ramBytesUsed

      public long ramBytesUsed()
      Description copied from interface: Accountable
      Returns an estimate of the JVM heap memory used by this object in bytes. The method name uses "ram" for historical reasons; only JVM heap memory should be reported. Off-heap resources such as memory-mapped files or native direct buffers should not be included. Negative values are illegal.
    • getOffHeapByteSize

      public Map<String,Long> getOffHeapByteSize(FieldInfo fieldInfo)
      Description copied from class: KnnVectorsReader
      Returns the desired size of off-heap memory for the given field. This size can be used to help determine the memory requirements for optimal search performance, which can be greatly affected by page faults when not enough memory is available.

      For reporting purposes, the size of the off-heap index structures is broken down by their file extension, which provides a logical categorization of their purpose, e.g. the Lucene99HnswVectorsFormat stores the HNSW graph neighbours lists in a file with the "vex" extension.

      The long value is the size in bytes of the off-heap space needed if the associated index structure were to be fully loaded in memory. While somewhat analogous to Accountable.ramBytesUsed() (which reports actual on-heap memory usage), the sizes reported by this method are not actual usage but rather the amount of available memory needed to fully load the index into memory, rather than an actual RAM usage requirement.

      To determine the total desired off-heap memory size for the given field:

      
       getOffHeapByteSize(field).values().stream().mapToLong(Long::longValue).sum();
       

      The default implementation returns an empty map.

      Overrides:
      getOffHeapByteSize in class KnnVectorsReader
      Parameters:
      fieldInfo - the fieldInfo
      Returns:
      a map of the desired off-heap memory requirements by category
    • getVectorCount

      public int getVectorCount(FieldInfo fieldInfo)
      Description copied from class: KnnVectorsReader
      Returns the number of indexed vectors for the given field in this segment.

      This has the same meaning as get*VectorValues(field).size(): the number of vector ordinals stored for fieldInfo in this segment.

      Standard vector formats read this from segment metadata without opening vector values. The default implementation opens vector values as a fallback; callers that need to avoid that I/O should use a reader that overrides this method.

      Opening vector values may read index data from storage and prefetch into memory, especially for sparse fields. That cost is why this metadata-only path exists, analogous to how doc values expose counts through DocValuesSkipper.docCount() rather than iterating values.

      Overrides:
      getVectorCount in class KnnVectorsReader
      Parameters:
      fieldInfo - the fieldInfo
      Returns:
      the number of indexed vectors for the field
    • checkIntegrity

      public void checkIntegrity() throws IOException
      Description copied from class: KnnVectorsReader
      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.

      Specified by:
      checkIntegrity in class KnnVectorsReader
      Throws:
      IOException
    • getMergeInstance

      public FlatVectorsReader getMergeInstance() throws IOException
      Description copied from class: FlatVectorsReader
      Returns an instance optimized for merging. This instance may only be consumed in the thread that called FlatVectorsReader.getMergeInstance().

      The default implementation returns this

      Overrides:
      getMergeInstance in class FlatVectorsReader
      Throws:
      IOException
    • getFloatVectorValues

      public FloatVectorValues getFloatVectorValues(String field) throws IOException
      Description copied from class: KnnVectorsReader
      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.
      Specified by:
      getFloatVectorValues in class KnnVectorsReader
      Throws:
      IOException
    • getFloatVectorValues

      public FloatVectorValues getFloatVectorValues(String field, DataAccessHint access) throws IOException
      Description copied from class: KnnVectorsReader
      Returns the FloatVectorValues for the given field, to be read with the given access pattern, such as DataAccessHint.SEQUENTIAL to read all vectors in order.

      The default implementation ignores access.

      Overrides:
      getFloatVectorValues in class KnnVectorsReader
      Throws:
      IOException
    • getByteVectorValues

      public ByteVectorValues getByteVectorValues(String field) throws IOException
      Description copied from class: KnnVectorsReader
      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.
      Specified by:
      getByteVectorValues in class KnnVectorsReader
      Throws:
      IOException
    • getFlatVectorScorer

      public FlatVectorsScorer getFlatVectorScorer(String field) throws IOException
      Description copied from class: FlatVectorsReader
      Returns a FlatVectorsScorer for the given field.
      Specified by:
      getFlatVectorScorer in class FlatVectorsReader
      Parameters:
      field - the field to search
      Throws:
      IOException
    • getRandomVectorScorer

      public RandomVectorScorer getRandomVectorScorer(String field, float[] target) throws IOException
      Description copied from class: FlatVectorsReader
      Returns a RandomVectorScorer for the given field and target vector.
      Specified by:
      getRandomVectorScorer in class FlatVectorsReader
      Parameters:
      field - the field to search
      target - the target vector
      Returns:
      a RandomVectorScorer for the given field and target vector.
      Throws:
      IOException - if an I/O error occurs when reading from the index.
    • getRandomVectorScorer

      public RandomVectorScorer getRandomVectorScorer(String field, byte[] target) throws IOException
      Description copied from class: FlatVectorsReader
      Returns a RandomVectorScorer for the given field and target vector.
      Specified by:
      getRandomVectorScorer in class FlatVectorsReader
      Parameters:
      field - the field to search
      target - the target vector
      Returns:
      a RandomVectorScorer for the given field and target vector.
      Throws:
      IOException - if an I/O error occurs when reading from the index.
    • close

      public void close() throws IOException
      Throws:
      IOException