Package org.apache.lucene.codecs

## Class Codec

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

- All Implemented Interfaces:
    `NamedSPILoader.NamedSPI`
  Direct Known Subclasses:
    `FilterCodec`, `Lucene99Codec`

      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

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    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.
    `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 Detail

    - #### 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 Detail

    - #### 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`