## 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
`static String` `PER_FIELD_FORMAT_KEY` `FieldInfo` attribute name used to store the format name for each field.
`static String` `PER_FIELD_NAME` Name of this `PostingsFormat`.
`static 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
`PerFieldPostingsFormat()` Sole constructor.

Method Summary
`FieldsConsumer` `fieldsConsumer(SegmentWriteState state)` Writes a new segment
`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 Detail

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

### PerFieldPostingsFormat

    public PerFieldPostingsFormat()

  Sole constructor.

Method Detail

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

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.