Package org.apache.lucene.codecs.uniformsplit.sharedterms

# Class STUniformSplitTermsWriter

java.lang.Object
org.apache.lucene.codecs.FieldsConsumer
org.apache.lucene.codecs.uniformsplit.UniformSplitTermsWriter
org.apache.lucene.codecs.uniformsplit.sharedterms.STUniformSplitTermsWriter

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public class STUniformSplitTermsWriter extends UniformSplitTermsWriter
Extends `UniformSplitTermsWriter` by sharing all the fields terms in the same dictionary and by writing all the fields of a term in the same block line.

The `block file` contains all the term blocks for all fields. Each block line, for a single term, may have multiple fields `TermState`. The block file also contains the fields metadata at the end of the file.

The `dictionary file` contains a single trie (`FST` bytes) for all fields.

This structure is adapted when there are lots of fields. In this case the shared-terms dictionary trie is much smaller.

This `FieldsConsumer` requires a custom `merge(MergeState, NormsProducer)` method for efficiency. The regular merge would scan all the fields sequentially, which internally would scan the whole shared-terms dictionary as many times as there are fields. Whereas the custom merge directly scans the internal shared-terms dictionary of all segments to merge, thus scanning once whatever the number of fields is.

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

- ## Field Summary

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

  `blockEncoder, blockOutput, DEFAULT_DELTA_NUM_LINES, DEFAULT_TARGET_NUM_BLOCK_LINES, deltaNumLines, dictionaryOutput, fieldInfos, fieldMetadataWriter, MAX_NUM_BLOCK_LINES, maxDoc, postingsWriter, targetNumBlockLines`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  ``
  `STUniformSplitTermsWriter(PostingsWriterBase postingsWriter, SegmentWriteState state, int targetNumBlockLines, int deltaNumLines, BlockEncoder blockEncoder)`
  `protected`
  `STUniformSplitTermsWriter(PostingsWriterBase postingsWriter, SegmentWriteState state, int targetNumBlockLines, int deltaNumLines, BlockEncoder blockEncoder, FieldMetadata.Serializer fieldMetadataWriter, String codecName, int versionCurrent, String termsBlocksExtension, String dictionaryExtension)`
  ``
  `STUniformSplitTermsWriter(PostingsWriterBase postingsWriter, SegmentWriteState state, BlockEncoder blockEncoder)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `merge(MergeState mergeState, NormsProducer normsProducer)`
  `void`
  `write(Fields fields, NormsProducer normsProducer)`
  `protected void`
  `writeDictionary(int fieldsNumber, IndexDictionary.Builder dictionaryBuilder)`

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

  `close, validateSettings, writeDictionary, writeEncodedFieldsMetadata, writeFieldsMetadata, writeFieldTerms, writePostingLine, writeUnencodedFieldsMetadata`

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

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

- ## Constructor Details

  - ### STUniformSplitTermsWriter

    public STUniformSplitTermsWriter(PostingsWriterBase postingsWriter, SegmentWriteState state, BlockEncoder blockEncoder) throws IOException
    Throws:
      `IOException`

  - ### STUniformSplitTermsWriter

    public STUniformSplitTermsWriter(PostingsWriterBase postingsWriter, SegmentWriteState state, int targetNumBlockLines, int deltaNumLines, BlockEncoder blockEncoder) throws IOException
    Throws:
      `IOException`

  - ### STUniformSplitTermsWriter

    protected STUniformSplitTermsWriter(PostingsWriterBase postingsWriter, SegmentWriteState state, int targetNumBlockLines, int deltaNumLines, BlockEncoder blockEncoder, FieldMetadata.Serializer fieldMetadataWriter, String codecName, int versionCurrent, String termsBlocksExtension, String dictionaryExtension) throws IOException
    Throws:
      `IOException`

- ## Method Details

  - ### write

    public void write(Fields fields, NormsProducer normsProducer) throws IOException
    Overrides:
      `write` in class `UniformSplitTermsWriter`
    Throws:
      `IOException`

  - ### writeDictionary

    protected void writeDictionary(int fieldsNumber, IndexDictionary.Builder dictionaryBuilder) throws IOException
    Throws:
      `IOException`

  - ### merge

    public void merge(MergeState mergeState, NormsProducer normsProducer) throws IOException
    Overrides:
      `merge` in class `FieldsConsumer`
    Throws:
      `IOException`