Package org.apache.lucene.search.suggest.document

## Class CompletionPostingsFormat

- java.lang.Object
- - org.apache.lucene.codecs.PostingsFormat
  - - org.apache.lucene.search.suggest.document.CompletionPostingsFormat

- All Implemented Interfaces:
    `NamedSPILoader.NamedSPI`
  Direct Known Subclasses:
    `Completion50PostingsFormat`, `Completion84PostingsFormat`, `Completion90PostingsFormat`, `Completion99PostingsFormat`

      public abstract class CompletionPostingsFormat
      extends PostingsFormat

  A `PostingsFormat` which supports document suggestion based on indexed `SuggestField`s. Document suggestion is based on an weighted FST which map analyzed terms of a `SuggestField` to its surface form and document id.

  Files:

  - `.lkp`: Completion Dictionary
  - `.cmp`: Completion Index

  ## Completion Dictionary

  The .lkp file contains an FST for each suggest field

  - CompletionDict (.lkp) --> Header, FSTNumSuggestFields, Footer
  - Header --> `CodecHeader`
  - FST --> `FST<Long, BytesRef>`
  - Footer --> `CodecFooter`

  Notes:

  - Header is a `CodecHeader` storing the version information for the Completion implementation.
  - FST maps all analyzed forms to surface forms of a SuggestField

  ## Completion Index

  The .cmp file contains an index into the completion dictionary, so that it can be accessed randomly.

  - CompletionIndex (.cmp) --> Header, NumSuggestFields, EntryNumSuggestFields, Footer
  - Header --> `CodecHeader`
  - NumSuggestFields --> `Uint32`
  - Entry --> FieldNumber, CompletionDictionaryOffset, MinWeight, MaxWeight, Type
  - FieldNumber --> `Uint32`
  - CompletionDictionaryOffset --> `Uint64`
  - MinWeight --> `Uint64`
  - MaxWeight --> `Uint64`
  - Type --> `Byte`
  - Footer --> `CodecFooter`

  Notes:

  - Header is a `CodecHeader` storing the version information for the Completion implementation.
  - NumSuggestFields is the number of suggest fields indexed
  - FieldNumber is the fields number from `FieldInfos`. (.fnm)
  - CompletionDictionaryOffset is the file offset of a field's FST in CompletionDictionary (.lkp)
  - MinWeight and MaxWeight are the global minimum and maximum weight for the field
  - Type indicates if the suggester has context or not
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `CompletionPostingsFormat.FSTLoadMode` | An enum that allows to control if suggester FSTs are loaded into memory or read off-heap

  - ### Field Summary

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

      `EMPTY`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `CompletionPostingsFormat​(String name)` | Used only by core Lucene at read-time via Service Provider instantiation
    `CompletionPostingsFormat​(String name, CompletionPostingsFormat.FSTLoadMode fstLoadMode)` | Creates a `CompletionPostingsFormat` that will use the provided `fstLoadMode` to determine if the completion FST should be loaded on or off heap.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected abstract PostingsFormat` | `delegatePostingsFormat()` | Concrete implementation should specify the delegating postings format
    `FieldsConsumer` | `fieldsConsumer​(SegmentWriteState state)` |
    `FieldsProducer` | `fieldsProducer​(SegmentReadState state)` |

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

- - ### Constructor Detail

    - #### CompletionPostingsFormat

          public CompletionPostingsFormat​(String name)

      Used only by core Lucene at read-time via Service Provider instantiation

    - #### CompletionPostingsFormat

          public CompletionPostingsFormat​(String name,
                                          CompletionPostingsFormat.FSTLoadMode fstLoadMode)

      Creates a `CompletionPostingsFormat` that will use the provided `fstLoadMode` to determine if the completion FST should be loaded on or off heap.

  - ### Method Detail

    - #### delegatePostingsFormat

          protected abstract PostingsFormat delegatePostingsFormat()

      Concrete implementation should specify the delegating postings format

    - #### fieldsConsumer

          public FieldsConsumer fieldsConsumer​(SegmentWriteState state)
                                        throws IOException

      Specified by:
        `fieldsConsumer` in class `PostingsFormat`
      Throws:
        `IOException`

    - #### fieldsProducer

          public FieldsProducer fieldsProducer​(SegmentReadState state)
                                        throws IOException

      Specified by:
        `fieldsProducer` in class `PostingsFormat`
      Throws:
        `IOException`