# Package org.apache.lucene.codecs.uniformsplit

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 `Lucene99PostingsFormat`

- Interface Summary
  Interface | Description
  --- | ---
  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
  Class | Description
  --- | ---
  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
  Enum | Description
  --- | ---
  IntersectBlockReader.BlockIteration | Block iteration order.