Package org.apache.lucene.codecs.perfield

## Class PerFieldKnnVectorsFormat

- java.lang.Object
- - org.apache.lucene.codecs.KnnVectorsFormat
  - - org.apache.lucene.codecs.perfield.PerFieldKnnVectorsFormat

- All Implemented Interfaces:
    `NamedSPILoader.NamedSPI`

      public abstract class PerFieldKnnVectorsFormat
      extends KnnVectorsFormat

  Enables per field numeric vector support.

  Note, when extending this class, the name (`KnnVectorsFormat.getName()`) is written into the index. In order for the field to be read, the name must resolve to your implementation via `KnnVectorsFormat.forName(String)`. This method uses Java's `Service Provider Interface` to resolve format names.

  Files written by each numeric vectors format have an additional suffix containing the format name. For example, in a per-field configuration instead of `_1.dat` filenames would look like `_1_Lucene40_0.dat`.

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

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `PerFieldKnnVectorsFormat.FieldsReader` | VectorReader that can wrap multiple delegate readers, selected by field.

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static String` | `PER_FIELD_FORMAT_KEY` | `FieldInfo` attribute name used to store the format name for each field.
    `static String` | `PER_FIELD_NAME` | Name of this `KnnVectorsFormat`.
    `static String` | `PER_FIELD_SUFFIX_KEY` | `FieldInfo` attribute name used to store the segment suffix name for each field.

    - ### Fields inherited from class org.apache.lucene.codecs.KnnVectorsFormat

      `EMPTY`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `KnnVectorsReader` | `fieldsReader​(SegmentReadState state)` | Returns a `KnnVectorsReader` to read the vectors from the index.
    `KnnVectorsWriter` | `fieldsWriter​(SegmentWriteState state)` | Returns a `KnnVectorsWriter` to write the vectors to the index.
    `abstract KnnVectorsFormat` | `getKnnVectorsFormatForField​(String field)` | Returns the numeric vector format that should be used for writing new segments of `field` .

    - ### Methods inherited from class org.apache.lucene.codecs.KnnVectorsFormat

      `forName, getName`

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

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

- - ### Field Detail

    - #### PER_FIELD_NAME

          public static final String PER_FIELD_NAME

      Name of this `KnnVectorsFormat`.
      See Also:
        Constant Field Values

    - #### PER_FIELD_FORMAT_KEY

          public static final String PER_FIELD_FORMAT_KEY

      `FieldInfo` attribute name used to store the format name for each field.

    - #### PER_FIELD_SUFFIX_KEY

          public static final String PER_FIELD_SUFFIX_KEY

      `FieldInfo` attribute name used to store the segment suffix name for each field.

  - ### Constructor Detail

    - #### PerFieldKnnVectorsFormat

          protected PerFieldKnnVectorsFormat()

      Sole constructor.

  - ### Method Detail

    - #### fieldsWriter

          public KnnVectorsWriter fieldsWriter​(SegmentWriteState state)
                                        throws IOException

      Description copied from class: `KnnVectorsFormat`
      Returns a `KnnVectorsWriter` to write the vectors to the index.
      Specified by:
        `fieldsWriter` in class `KnnVectorsFormat`
      Throws:
        `IOException`

    - #### fieldsReader

          public KnnVectorsReader fieldsReader​(SegmentReadState state)
                                        throws IOException

      Description copied from class: `KnnVectorsFormat`
      Returns a `KnnVectorsReader` to read the vectors from the index.
      Specified by:
        `fieldsReader` in class `KnnVectorsFormat`
      Throws:
        `IOException`

    - #### getKnnVectorsFormatForField

          public abstract KnnVectorsFormat getKnnVectorsFormatForField​(String field)

      Returns the numeric vector format that should be used for writing new segments of `field` .

      The field to format mapping is written to the index, so this method is only invoked when writing, not when reading.