org.apache.lucene.codecs

## Class Codec

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

All Implemented Interfaces:
  NamedSPILoader.NamedSPI

Direct Known Subclasses:
  FilterCodec, Lucene3xCodec, Lucene40Codec, Lucene41Codec, Lucene42Codec

    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
`protected` `Codec(String name)` Creates a new codec.

### Method Summary

Methods
`static Set<String>` `availableCodecs()` returns a list of all available codec names
`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 LiveDocsFormat` `liveDocsFormat()` Encodes/decodes live docs
`abstract NormsFormat` `normsFormat()` Encodes/decodes document normalization values
`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

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