Package org.apache.lucene.codecs.perfield

# Class PerFieldPostingsFormat

java.lang.Object
org.apache.lucene.codecs.PostingsFormat
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat

All Implemented Interfaces:
  `NamedSPILoader.NamedSPI`

public abstract class PerFieldPostingsFormat extends PostingsFormat
Enables per field postings support.

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

Files written by each posting format have an additional suffix containing the format name. For example, in a per-field configuration instead of `_1.prx` filenames would look like `_1_Lucene40_0.prx`.

See Also:
  - `ServiceLoader`
WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `PER_FIELD_FORMAT_KEY`
  `FieldInfo` attribute name used to store the format name for each field.
  `static final String`
  `PER_FIELD_NAME`
  Name of this `PostingsFormat`.
  `static final String`
  `PER_FIELD_SUFFIX_KEY`
  `FieldInfo` attribute name used to store the segment suffix name for each field.

  ### Fields inherited from class org.apache.lucene.codecs.PostingsFormat

  `EMPTY`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `PerFieldPostingsFormat()`
  Sole constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final FieldsConsumer`
  `fieldsConsumer(SegmentWriteState state)`
  Writes a new segment
  `final FieldsProducer`
  `fieldsProducer(SegmentReadState state)`
  Reads a segment.
  `abstract PostingsFormat`
  `getPostingsFormatForField(String field)`
  Returns the postings format that should be used for writing new segments of `field`.

  ### Methods inherited from class org.apache.lucene.codecs.PostingsFormat

  `availablePostingsFormats, forName, getName, reloadPostingsFormats, toString`

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

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

- ## Field Details

  - ### PER_FIELD_NAME

    public static final String PER_FIELD_NAME
    Name of this `PostingsFormat`.
    See Also:
      - Constant Field Values

  - ### PER_FIELD_FORMAT_KEY

    public static final String PER_FIELD_FORMAT_KEY
    `FieldInfo` attribute name used to store the format name for each field.

  - ### PER_FIELD_SUFFIX_KEY

    public static final String PER_FIELD_SUFFIX_KEY
    `FieldInfo` attribute name used to store the segment suffix name for each field.

- ## Constructor Details

  - ### PerFieldPostingsFormat

    protected PerFieldPostingsFormat()
    Sole constructor.

- ## Method Details

  - ### fieldsConsumer

    public final FieldsConsumer fieldsConsumer(SegmentWriteState state) throws IOException
    Description copied from class: `PostingsFormat`
    Writes a new segment
    Specified by:
      `fieldsConsumer` in class `PostingsFormat`
    Throws:
      `IOException`

  - ### fieldsProducer

    public final FieldsProducer fieldsProducer(SegmentReadState state) throws IOException
    Description copied from class: `PostingsFormat`
    Reads a segment. NOTE: by the time this call returns, it must hold open any files it will need to use; else, those files may be deleted. Additionally, required files may be deleted during the execution of this call before there is a chance to open them. Under these circumstances an IOException should be thrown by the implementation. IOExceptions are expected and will automatically cause a retry of the segment opening logic with the newly revised segments.
    Specified by:
      `fieldsProducer` in class `PostingsFormat`
    Throws:
      `IOException`

  - ### getPostingsFormatForField

    public abstract PostingsFormat getPostingsFormatForField(String field)
    Returns the postings 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.