Package org.apache.lucene.codecs

# Class PushPostingsWriterBase

java.lang.Object
org.apache.lucene.codecs.PostingsWriterBase
org.apache.lucene.codecs.PushPostingsWriterBase

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

Direct Known Subclasses:
  `Lucene103PostingsWriter`

public abstract class PushPostingsWriterBase extends PostingsWriterBase
Extension of `PostingsWriterBase`, adding a push API for writing each element of the postings. This API is somewhat analogous to an XML SAX API, while `PostingsWriterBase` is more like an XML DOM API.

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

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected FieldInfo`
  `fieldInfo`
  `FieldInfo` of current field being written.
  `protected IndexOptions`
  `indexOptions`
  `IndexOptions` of current field being written
  `protected boolean`
  `writeFreqs`
  True if the current field writes freqs.
  `protected boolean`
  `writeOffsets`
  True if the current field writes offsets.
  `protected boolean`
  `writePayloads`
  True if the current field writes payloads.
  `protected boolean`
  `writePositions`
  True if the current field writes positions.

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract void`
  `addPosition(int position, BytesRef payload, int startOffset, int endOffset)`
  Add a new position and payload, and start/end offset.
  `abstract void`
  `finishDoc()`
  Called when we are done adding positions and payloads for each doc.
  `abstract void`
  `finishTerm(BlockTermState state)`
  Finishes the current term.
  `abstract BlockTermState`
  `newTermState()`
  Return a newly created empty TermState
  `void`
  `setField(FieldInfo fieldInfo)`
  Sets the current field for writing, and returns the fixed length of long[] metadata (which is fixed per field), called when the writing switches to another field.
  `abstract void`
  `startDoc(int docID, int freq)`
  Adds a new doc in this term.
  `abstract void`
  `startTerm(NumericDocValues norms)`
  Start a new term.
  `final BlockTermState`
  `writeTerm(BytesRef term, TermsEnum termsEnum, FixedBitSet docsSeen, NormsProducer norms)`
  Write all postings for one term; use the provided `TermsEnum` to pull a `PostingsEnum`.

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

  `close, encodeTerm, init`

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

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

- ## Field Details

  - ### fieldInfo

    protected FieldInfo fieldInfo
    `FieldInfo` of current field being written.

  - ### indexOptions

    protected IndexOptions indexOptions
    `IndexOptions` of current field being written

  - ### writeFreqs

    protected boolean writeFreqs
    True if the current field writes freqs.

  - ### writePositions

    protected boolean writePositions
    True if the current field writes positions.

  - ### writePayloads

    protected boolean writePayloads
    True if the current field writes payloads.

  - ### writeOffsets

    protected boolean writeOffsets
    True if the current field writes offsets.

- ## Constructor Details

  - ### PushPostingsWriterBase

    protected PushPostingsWriterBase()
    Sole constructor. (For invocation by subclass constructors, typically implicit.)

- ## Method Details

  - ### newTermState

    public abstract BlockTermState newTermState() throws IOException
    Return a newly created empty TermState
    Throws:
      `IOException`

  - ### startTerm

    public abstract void startTerm(NumericDocValues norms) throws IOException
    Start a new term. Note that a matching call to `finishTerm(BlockTermState)` is done, only if the term has at least one document.
    Throws:
      `IOException`

  - ### finishTerm

    public abstract void finishTerm(BlockTermState state) throws IOException
    Finishes the current term. The provided `BlockTermState` contains the term's summary statistics, and will holds metadata from PBF when returned
    Throws:
      `IOException`

  - ### setField

    public void setField(FieldInfo fieldInfo)
    Sets the current field for writing, and returns the fixed length of long[] metadata (which is fixed per field), called when the writing switches to another field.
    Specified by:
      `setField` in class `PostingsWriterBase`

  - ### writeTerm

    public final BlockTermState writeTerm(BytesRef term, TermsEnum termsEnum, FixedBitSet docsSeen, NormsProducer norms) throws IOException
    Description copied from class: `PostingsWriterBase`
    Write all postings for one term; use the provided `TermsEnum` to pull a `PostingsEnum`. This method should not re-position the `TermsEnum`! It is already positioned on the term that should be written. This method must set the bit in the provided `FixedBitSet` for every docID written. If no docs were written, this method should return null, and the terms dict will skip the term.
    Specified by:
      `writeTerm` in class `PostingsWriterBase`
    Throws:
      `IOException`

  - ### startDoc

    public abstract void startDoc(int docID, int freq) throws IOException
    Adds a new doc in this term. `freq` will be -1 when term frequencies are omitted for the field.
    Throws:
      `IOException`

  - ### addPosition

    public abstract void addPosition(int position, BytesRef payload, int startOffset, int endOffset) throws IOException
    Add a new position and payload, and start/end offset. A null payload means no payload; a non-null payload with zero length also means no payload. Caller may reuse the `BytesRef` for the payload between calls (method must fully consume the payload). `startOffset` and `endOffset` will be -1 when offsets are not indexed.
    Throws:
      `IOException`

  - ### finishDoc

    public abstract void finishDoc() throws IOException
    Called when we are done adding positions and payloads for each doc.
    Throws:
      `IOException`