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:
  Lucene84PostingsWriter

    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
`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
`protected` `PushPostingsWriterBase()` Sole constructor.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`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
`int` `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.
`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 Detail

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

#### PushPostingsWriterBase

    protected PushPostingsWriterBase()

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

### Method Detail

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