Class Codec

java.lang.Object
org.apache.lucene.codecs.Codec
All Implemented Interfaces:
NamedSPILoader.NamedSPI
Direct Known Subclasses:
FilterCodec, Lucene91Codec

public abstract class Codec extends Object implements NamedSPILoader.NamedSPI
Encodes/decodes an inverted index segment.

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

If you implement your own codec, make sure that it has a no-arg constructor so SPI can load it.

See Also:
  • Constructor Details

    • Codec

      protected Codec(String name)
      Creates a new codec.

      The provided name will be written into the index segment: in order to for the segment to be read this class should be registered with Java's SPI mechanism (registered in META-INF/ of your jar file, etc).

      Parameters:
      name - must be all ascii alphanumeric, and less than 128 characters in length.
  • Method Details

    • getName

      public final String getName()
      Returns this codec's name
      Specified by:
      getName in interface NamedSPILoader.NamedSPI
    • postingsFormat

      public abstract PostingsFormat postingsFormat()
      Encodes/decodes postings
    • docValuesFormat

      public abstract DocValuesFormat docValuesFormat()
      Encodes/decodes docvalues
    • storedFieldsFormat

      public abstract StoredFieldsFormat storedFieldsFormat()
      Encodes/decodes stored fields
    • termVectorsFormat

      public abstract TermVectorsFormat termVectorsFormat()
      Encodes/decodes term vectors
    • fieldInfosFormat

      public abstract FieldInfosFormat fieldInfosFormat()
      Encodes/decodes field infos file
    • segmentInfoFormat

      public abstract SegmentInfoFormat segmentInfoFormat()
      Encodes/decodes segment info file
    • normsFormat

      public abstract NormsFormat normsFormat()
      Encodes/decodes document normalization values
    • liveDocsFormat

      public abstract LiveDocsFormat liveDocsFormat()
      Encodes/decodes live docs
    • compoundFormat

      public abstract CompoundFormat compoundFormat()
      Encodes/decodes compound files
    • pointsFormat

      public abstract PointsFormat pointsFormat()
      Encodes/decodes points index
    • knnVectorsFormat

      public abstract KnnVectorsFormat knnVectorsFormat()
      Encodes/decodes numeric vector fields
    • forName

      public static Codec forName(String name)
      looks up a codec by name
    • availableCodecs

      public static Set<String> availableCodecs()
      returns a list of all available codec names
    • reloadCodecs

      public static void reloadCodecs(ClassLoader classloader)
      Reloads the codec list from the given ClassLoader. Changes to the codecs are visible after the method ends, all iterators (availableCodecs(),...) stay consistent.

      NOTE: Only new codecs are added, existing ones are never removed or replaced.

      This method is expensive and should only be called for discovery of new codecs on the given classpath/classloader!

    • getDefault

      public static Codec getDefault()
      expert: returns the default codec used for newly created IndexWriterConfigs.
    • setDefault

      public static void setDefault(Codec codec)
      expert: sets the default codec used for newly created IndexWriterConfigs.
    • toString

      public String toString()
      returns the codec's name. Subclasses can override to provide more detail (such as parameters).
      Overrides:
      toString in class Object