Class PushPostingsWriterBase

java.lang.Object
org.apache.lucene.codecs.PostingsWriterBase
org.apache.lucene.codecs.PushPostingsWriterBase
All Implemented Interfaces:
Closeable, AutoCloseable
Direct Known Subclasses:
Lucene90PostingsWriter

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:
WARNING: This API is experimental and might change in incompatible ways in the next release.
  • 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