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`