Package org.apache.lucene.codecs

# Class Codec

java.lang.Object
org.apache.lucene.codecs.Codec

All Implemented Interfaces:
  `NamedSPILoader.NamedSPI`

Direct Known Subclasses:
  `FilterCodec`, `Lucene103Codec`

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:
  - `ServiceLoader`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `Codec(String name)`
  Creates a new codec.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static Set<String>`
  `availableCodecs()`
  returns a list of all available codec names
  `abstract CompoundFormat`
  `compoundFormat()`
  Encodes/decodes compound files
  `abstract DocValuesFormat`
  `docValuesFormat()`
  Encodes/decodes docvalues
  `abstract FieldInfosFormat`
  `fieldInfosFormat()`
  Encodes/decodes field infos file
  `static Codec`
  `forName(String name)`
  looks up a codec by name
  `static Codec`
  `getDefault()`
  expert: returns the default codec used for newly created `IndexWriterConfig`s.
  `final String`
  `getName()`
  Returns this codec's name
  `abstract KnnVectorsFormat`
  `knnVectorsFormat()`
  Encodes/decodes numeric vector fields
  `abstract LiveDocsFormat`
  `liveDocsFormat()`
  Encodes/decodes live docs
  `abstract NormsFormat`
  `normsFormat()`
  Encodes/decodes document normalization values
  `abstract PointsFormat`
  `pointsFormat()`
  Encodes/decodes points index
  `abstract PostingsFormat`
  `postingsFormat()`
  Encodes/decodes postings
  `static void`
  `reloadCodecs(ClassLoader classloader)`
  Reloads the codec list from the given `ClassLoader`.
  `abstract SegmentInfoFormat`
  `segmentInfoFormat()`
  Encodes/decodes segment info file
  `static void`
  `setDefault(Codec codec)`
  expert: sets the default codec used for newly created `IndexWriterConfig`s.
  `abstract StoredFieldsFormat`
  `storedFieldsFormat()`
  Encodes/decodes stored fields
  `abstract TermVectorsFormat`
  `termVectorsFormat()`
  Encodes/decodes term vectors
  `String`
  `toString()`
  returns the codec's name.

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

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

- ## 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 `IndexWriterConfig`s.

  - ### setDefault

    public static void setDefault(Codec codec)
    expert: sets the default codec used for newly created `IndexWriterConfig`s.

  - ### toString

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