Class 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
    • Field Detail

      • PER_FIELD_FORMAT_KEY

        public static final java.lang.String PER_FIELD_FORMAT_KEY
        FieldInfo attribute name used to store the format name for each field.
      • PER_FIELD_SUFFIX_KEY

        public static final java.lang.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

      • getKnnVectorsFormatForField

        public abstract KnnVectorsFormat getKnnVectorsFormatForField​(java.lang.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.

      • getSuffix

        static java.lang.String getSuffix​(java.lang.String formatName,
                                          java.lang.String suffix)
      • getFullSegmentSuffix

        static java.lang.String getFullSegmentSuffix​(java.lang.String outerSegmentSuffix,
                                                     java.lang.String segmentSuffix)