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:
  `Lucene912PostingsWriter`

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`