org.apache.lucene.codecs.uniformsplit.sharedterms

## Class STMergingBlockReader

- java.lang.Object
- - org.apache.lucene.index.TermsEnum
  - - org.apache.lucene.index.BaseTermsEnum
    - - org.apache.lucene.codecs.uniformsplit.BlockReader
      - - org.apache.lucene.codecs.uniformsplit.sharedterms.STBlockReader
        - - org.apache.lucene.codecs.uniformsplit.sharedterms.STMergingBlockReader

All Implemented Interfaces:
  Accountable, BytesRefIterator

    public class STMergingBlockReader
    extends STBlockReader

`TermsEnum` used when merging segments, to enumerate the terms of an input segment and get all the fields `TermState`s of each term.

It only supports calls to `next()` and no seek method.

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

### Nested Class Summary

### Nested classes/interfaces inherited from class org.apache.lucene.index.TermsEnum

`TermsEnum.SeekStatus`

### Field Summary

### Fields inherited from class org.apache.lucene.codecs.uniformsplit.sharedterms.STBlockReader

`fieldInfos`

### Fields inherited from class org.apache.lucene.codecs.uniformsplit.BlockReader

`blockDecoder, blockFirstLineStart, blockHeader, blockInput, blockLine, blockLineReader, blockReadBuffer, blockStartFP, dictionaryBrowser, dictionaryBrowserSupplier, fieldMetadata, forcedTerm, lineIndexInBlock, postingsReader, scratchBlockBytes, scratchTermState, termState, termStateForced, termStateSerializer, termStatesReadBuffer`

### Fields inherited from class org.apache.lucene.index.TermsEnum

`EMPTY`

### Constructor Summary

Constructors
Constructor and Description
`STMergingBlockReader(Supplier<IndexDictionary.Browser> dictionaryBrowserSupplier, IndexInput blockInput, PostingsReaderBase postingsReader, FieldMetadata fieldMetadata, BlockDecoder blockDecoder, FieldInfos fieldInfos)`

### Method Summary

All Methods Instance Methods Concrete Methods
`BytesRef` `next()`
`PostingsEnum` `postings(String fieldName, BlockTermState termState, PostingsEnum reuse, int flags)` Creates a new `PostingsEnum` for the provided field and `BlockTermState`.
`void` `readFieldTermStatesMap(Map<String,BlockTermState> fieldTermStatesMap)` Reads all the fields `TermState`s of the current term and put them in the provided map.
`protected BlockTermState` `readTermStateIfNotRead()` Reads the `BlockTermState` if it is not already set.
`TermsEnum.SeekStatus` `seekCeil(BytesRef searchedTerm)`
`boolean` `seekExact(BytesRef searchedTerm)`
`void` `seekExact(BytesRef term, TermState state)` Positions this `BlockReader` without re-seeking the term dictionary.
`void` `seekExact(long ord)` Not supported.

### Methods inherited from class org.apache.lucene.codecs.uniformsplit.sharedterms.STBlockReader

`isBeyondLastTerm, nextTerm, readTermState`

### Methods inherited from class org.apache.lucene.codecs.uniformsplit.BlockReader

`clearTermState, compareToMiddleAndJump, decodeBlockBytesIfNeeded, docFreq, getOrCreateDictionaryBrowser, impacts, initializeBlockReadLazily, initializeHeader, isCurrentTerm, ord, postings, ramBytesUsed, readHeader, readLineInBlock, seekInBlock, seekInBlock, term, termState, totalTermFreq`

### Methods inherited from class org.apache.lucene.index.BaseTermsEnum

`attributes`

### Methods inherited from class org.apache.lucene.index.TermsEnum

`postings`

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

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

### Methods inherited from interface org.apache.lucene.util.Accountable

`getChildResources`

### Constructor Detail

#### STMergingBlockReader

    public STMergingBlockReader(Supplier<IndexDictionary.Browser> dictionaryBrowserSupplier,
                                IndexInput blockInput,
                                PostingsReaderBase postingsReader,
                                FieldMetadata fieldMetadata,
                                BlockDecoder blockDecoder,
                                FieldInfos fieldInfos)
                         throws IOException

Throws:
  `IOException`

### Method Detail

#### seekCeil

    public TermsEnum.SeekStatus seekCeil(BytesRef searchedTerm)

Overrides:
  `seekCeil` in class `STBlockReader`

#### seekExact

    public boolean seekExact(BytesRef searchedTerm)

Overrides:
  `seekExact` in class `STBlockReader`

#### seekExact

    public void seekExact(BytesRef term,
                          TermState state)

Description copied from class: `BlockReader`
Positions this `BlockReader` without re-seeking the term dictionary.

The block containing the term is not read by this method. It will be read lazily only if needed, for example if `BlockReader.next()` is called. Calling `BlockReader.postings(org.apache.lucene.index.PostingsEnum, int)` after this method does require the block to be read.

Overrides:
  `seekExact` in class `BlockReader`

#### seekExact

    public void seekExact(long ord)

Description copied from class: `BlockReader`
Not supported.

Overrides:
  `seekExact` in class `BlockReader`

#### readTermStateIfNotRead

    protected BlockTermState readTermStateIfNotRead()

Description copied from class: `BlockReader`
Reads the `BlockTermState` if it is not already set. Sets `BlockReader.termState`.

Overrides:
  `readTermStateIfNotRead` in class `BlockReader`

#### next

    public BytesRef next()
                  throws IOException

Specified by:
  `next` in interface `BytesRefIterator`
Overrides:
  `next` in class `STBlockReader`
Throws:
  `IOException`

#### postings

    public PostingsEnum postings(String fieldName,
                                 BlockTermState termState,
                                 PostingsEnum reuse,
                                 int flags)
                          throws IOException

Creates a new `PostingsEnum` for the provided field and `BlockTermState`.

Parameters:
  `reuse` - Previous `PostingsEnum` to reuse; or null to create a new one.
  `flags` - Postings flags.
Throws:
  `IOException`

#### readFieldTermStatesMap

    public void readFieldTermStatesMap(Map<String,BlockTermState> fieldTermStatesMap)
                                throws IOException

Reads all the fields `TermState`s of the current term and put them in the provided map. Clears the map first, before putting `TermState`s.

Throws:
  `IOException`