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 and Description
    --- | ---
    `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

    Constructors
    Constructor and Description
    `PerFieldPostingsFormat()` Sole constructor.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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-2022 Apache Software Foundation. All Rights Reserved.