# Package org.apache.lucene.codecs.uniformsplit

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

- Related Packages
  Package
  Description
  org.apache.lucene.codecs.uniformsplit.sharedterms
  Pluggable term index / block terms dictionary implementations.
- Class
  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.
  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`.
  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`.
  IntersectBlockReader
  The "intersect" `TermsEnum` response to `UniformSplitTerms.intersect(CompiledAutomaton, BytesRef)`, intersecting the terms with an automaton.
  IntersectBlockReader.BlockIteration
  Block iteration order.
  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.