FieldsConsumer (Lucene 10.5.1 core API)
Description: declaration: package: org.apache.lucene.codecs, class: FieldsConsumer

Package org.apache.lucene.codecs

# Class FieldsConsumer

java.lang.Object
org.apache.lucene.codecs.FieldsConsumer

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

Direct Known Subclasses:
  `Lucene103BlockTreeTermsWriter`

public abstract class FieldsConsumer extends Object implements Closeable
Abstract API that consumes terms, doc, freq, prox, offset and payloads postings. Concrete implementations of this actually do "something" with the postings (write it into the index in a specific format).

WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract void`
  `close()`
  `void`
  `merge(MergeState mergeState, NormsProducer norms)`
  Merges in the fields from the readers in `mergeState`.
  `abstract void`
  `write(Fields fields, NormsProducer norms)`
  Write all fields, terms and postings.

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

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

- ## Constructor Details

  - ### FieldsConsumer

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

- ## Method Details

  - ### write

    public abstract void write(Fields fields, NormsProducer norms) throws IOException
    Write all fields, terms and postings. This the "pull" API, allowing you to iterate more than once over the postings, somewhat analogous to using a DOM API to traverse an XML tree.

    Notes:

    - You must compute index statistics, including each Term's docFreq and totalTermFreq, as well as the summary sumTotalTermFreq, sumTotalDocFreq and docCount.
    - You must skip terms that have no docs and fields that have no terms, even though the provided Fields API will expose them; this typically requires lazily writing the field or term until you've actually seen the first term or document.
    - The provided Fields instance is limited: you cannot call any methods that return statistics/counts; you cannot pass a non-null live docs when pulling docs/positions enums.
    Throws:
      `IOException`

  - ### merge

    public void merge(MergeState mergeState, NormsProducer norms) throws IOException
    Merges in the fields from the readers in `mergeState`. The default implementation skips and maps around deleted documents, and calls `write(Fields,NormsProducer)`. Implementations can override this method for more sophisticated merging (bulk-byte copying, etc).
    Throws:
      `IOException`

  - ### close

    public abstract void close() throws IOException
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Throws:
      `IOException`