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
    Modifier and Type | Field and 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 and Description
    --- | ---
    `protected` | `PushPostingsWriterBase()` Sole constructor.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and 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.
    `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 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`

Copyright © 2000-2022 Apache Software Foundation. All Rights Reserved.