Class BufferingKnnVectorsWriter

java.lang.Object
org.apache.lucene.codecs.KnnVectorsWriter
org.apache.lucene.codecs.BufferingKnnVectorsWriter
All Implemented Interfaces:
Closeable, AutoCloseable, Accountable

public abstract class BufferingKnnVectorsWriter extends KnnVectorsWriter
Buffers up pending vector value(s) per doc, then flushes when segment flushes. Used for SimpleTextKnnVectorsWriter and for vectors writers before v 9.3 .
WARNING: This API is experimental and might change in incompatible ways in the next release.
  • Constructor Details

    • BufferingKnnVectorsWriter

      protected BufferingKnnVectorsWriter()
      Sole constructor
  • Method Details

    • addField

      public KnnFieldVectorsWriter<?> addField(FieldInfo fieldInfo) throws IOException
      Description copied from class: KnnVectorsWriter
      Add new field for indexing
      Specified by:
      addField in class KnnVectorsWriter
      Throws:
      IOException
    • flush

      public void flush(int maxDoc, Sorter.DocMap sortMap) throws IOException
      Description copied from class: KnnVectorsWriter
      Flush all buffered data on disk *
      Specified by:
      flush in class KnnVectorsWriter
      Throws:
      IOException
    • 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.
    • mergeOneField

      public IORunnable mergeOneField(FieldInfo fieldInfo, MergeState mergeState) throws IOException
      Description copied from class: KnnVectorsWriter
      Merges vectors for a single field, returning a runnable for any deferred work (e.g., HNSW graph construction). The default implementation merges naively the vectors and returns null (no deferred work).

      Subclasses should override this method may implement a two-phase merge strategy where flat vectors are written in the first phase and additional indexing structures (like HNSW graphs) are built in the second phase using the already-written flat vector data.

      Overrides:
      mergeOneField in class KnnVectorsWriter
      Parameters:
      fieldInfo - the field to merge
      mergeState - the merge state
      Returns:
      a runnable to execute in phase 2, or null if there is no deferred work
      Throws:
      IOException - if an I/O error occurs
    • writeField

      protected abstract void writeField(FieldInfo fieldInfo, FloatVectorValues floatVectorValues, int maxDoc) throws IOException
      Write the provided float vector field
      Throws:
      IOException
    • writeField

      protected abstract void writeField(FieldInfo fieldInfo, ByteVectorValues byteVectorValues, int maxDoc) throws IOException
      Write the provided byte vector field
      Throws:
      IOException