org.apache.lucene.codecs.uniformsplit

## Class FSTDictionary

- java.lang.Object
- - org.apache.lucene.codecs.uniformsplit.FSTDictionary

All Implemented Interfaces:
  IndexDictionary, Accountable

    public class FSTDictionary
    extends Object
    implements IndexDictionary

Immutable stateless `FST`-based index dictionary kept in memory.

Use `IndexDictionary.Builder` to build the `IndexDictionary`.

Create a stateful `IndexDictionary.Browser` to seek a term in this `IndexDictionary` and get its corresponding block file pointer to the terms block file.

Its greatest advantage is to be very compact in memory thanks to both the compaction of the `FST` as a byte array, and the incremental encoding of the leaves block pointer values, which are long integers in increasing order, with `PositiveIntOutputs`.
With a compact dictionary in memory we can increase the number of blocks. This allows us to reduce the average block size, which means faster scan inside a block.

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

### Nested Class Summary

Nested Classes
`protected class` `FSTDictionary.Browser`
`static class` `FSTDictionary.Builder` Builds an immutable `FSTDictionary`.

### Field Summary

Fields
`protected FST<Long>` `dictionary`

### Constructor Summary

Constructors
`protected` `FSTDictionary(FST<Long> dictionary)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`FSTDictionary.Browser` `browser()` Creates a new `IndexDictionary.Browser`.
`long` `ramBytesUsed()`
`protected static FSTDictionary` `read(DataInput input, BlockDecoder blockDecoder)` Reads a `FSTDictionary` from the provided input.
`void` `write(DataOutput output, BlockEncoder blockEncoder)` Writes this dictionary to the provided output.

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

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

### Methods inherited from interface org.apache.lucene.util.Accountable

`getChildResources`

### Field Detail

#### dictionary

    protected final FST<Long> dictionary

### Constructor Detail

#### FSTDictionary

    protected FSTDictionary(FST<Long> dictionary)

### Method Detail

#### ramBytesUsed

    public long ramBytesUsed()

Specified by:
  `ramBytesUsed` in interface `Accountable`

#### write

    public void write(DataOutput output,
                      BlockEncoder blockEncoder)
               throws IOException

Description copied from interface: `IndexDictionary`
Writes this dictionary to the provided output.

Specified by:
  `write` in interface `IndexDictionary`
  `blockEncoder` - The `BlockEncoder` for specific encoding of this index dictionary; or null if none.
Throws:
  `IOException`

#### read

    protected static FSTDictionary read(DataInput input,
                                        BlockDecoder blockDecoder)
                                 throws IOException

Reads a `FSTDictionary` from the provided input.

Parameters:
  `blockDecoder` - The `BlockDecoder` to use for specific decoding; or null if none.
Throws:
  `IOException`

#### browser

    public FSTDictionary.Browser browser()

Description copied from interface: `IndexDictionary`
Creates a new `IndexDictionary.Browser`.

Specified by:
  `browser` in interface `IndexDictionary`