# Package org.apache.lucene.codecs.uniformsplit

Pluggable term index / block terms dictionary implementations.

See: Description

Interface Summary
BlockDecoder: Decodes the raw bytes of a block when the index is read, according to the `BlockEncoder` used during the writing of the index.
BlockEncoder: Encodes the raw bytes of a block when the index is written.
BlockEncoder.WritableBytes: Writable byte buffer.
IndexDictionary: Immutable stateless index dictionary kept in RAM.
IndexDictionary.Browser: Stateful `IndexDictionary.Browser` to seek a term in this `IndexDictionary` and get its corresponding block file pointer in the block file.
IndexDictionary.BrowserSupplier: Supplier for a new stateful `IndexDictionary.Browser` created on the immutable `IndexDictionary`.
IndexDictionary.Builder: Builds an immutable `IndexDictionary`.

Class Summary
BlockHeader: Block header containing block metadata.
BlockHeader.Serializer: Reads/writes block header.
BlockLine: One term block line.
BlockLine.Serializer: Reads/writes block lines with terms encoded incrementally inside a block.
BlockReader: Seeks the block corresponding to a given term, read the block bytes, and scans the block terms.
BlockWriter: Writes blocks in the block file.
DeltaBaseTermStateSerializer: `TermState` serializer which encodes each file pointer as a delta relative to a base file pointer.
FieldMetadata: Metadata and stats for one field in the index.
FieldMetadata.Serializer: Reads/writes field metadata.
FSTDictionary: Immutable stateless `FST`-based index dictionary kept in memory.
FSTDictionary.BrowserSupplier: Provides stateful `FSTDictionary.Browser` to seek in the `FSTDictionary`.
FSTDictionary.Builder: Builds an immutable `FSTDictionary`.
IntersectBlockReader: The "intersect" `TermsEnum` response to `UniformSplitTerms.intersect(CompiledAutomaton, BytesRef)`, intersecting the terms with an automaton.
RamUsageUtil: Utility methods to estimate the RAM usage of objects.
TermBytes: Term of a block line.
UniformSplitPostingsFormat: `PostingsFormat` based on the Uniform Split technique.
UniformSplitTerms: `Terms` based on the Uniform Split technique.
UniformSplitTermsReader: A block-based terms index and dictionary based on the Uniform Split technique.
UniformSplitTermsWriter: A block-based terms index and dictionary that assigns terms to nearly uniform length blocks.

Enum Summary
IntersectBlockReader.BlockIteration: Block iteration order.

## Package org.apache.lucene.codecs.uniformsplit Description

Pluggable term index / block terms dictionary implementations. Structure similar to `VariableGapTermsIndexWriter` with additional optimizations.

- Designed to be extensible
- Reduced on-heap memory usage.
- Efficient to seek terms (`TermQuery`, `PhraseQuery`)
- Quite efficient for `PrefixQuery`
- Not efficient for spell-check and `FuzzyQuery`, in this case prefer `Lucene84PostingsFormat`