FSTCompiler.Builder (Lucene 10.5.0 core API)
Description: declaration: package: org.apache.lucene.util.fst, class: FSTCompiler, class: Builder

Package org.apache.lucene.util.fst

# Class FSTCompiler.Builder<T>

java.lang.Object
org.apache.lucene.util.fst.FSTCompiler.Builder<T>

Enclosing class:
  `FSTCompiler<T>`

public static class FSTCompiler.Builder<T> extends Object
Fluent-style constructor for FST `FSTCompiler`.

Creates an FST/FSA builder with all the possible tuning and construction tweaks. Read parameter documentation carefully.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Builder(FST.INPUT_TYPE inputType, Outputs<T> outputs)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `FSTCompiler.Builder<T>`
  `allowFixedLengthArcs(boolean allowFixedLengthArcs)`
  Pass `false` to disable the fixed length arc optimization (binary search or direct addressing) while building the FST; this will make the resulting FST smaller but slower to traverse.
  `FSTCompiler<T>`
  `build()`
  Creates a new `FSTCompiler`.
  `FSTCompiler.Builder<T>`
  `dataOutput(DataOutput dataOutput)`
  Set the `DataOutput` which is used for low-level writing of FST.
  `FSTCompiler.Builder<T>`
  `directAddressingMaxOversizingFactor(float factor)`
  Overrides the default the maximum oversizing of fixed array allowed to enable direct addressing of arcs instead of binary search.
  `FSTCompiler.Builder<T>`
  `setVersion(int version)`
  Expert: Set the codec version.
  `FSTCompiler.Builder<T>`
  `suffixRAMLimitMB(double mb)`
  The approximate maximum amount of RAM (in MB) to use holding the suffix cache, which enables the FST to share common suffixes.

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

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

- ## Constructor Details

  - ### Builder

    public Builder(FST.INPUT_TYPE inputType, Outputs<T> outputs)
    Parameters:
      `inputType` - The input type (transition labels). Can be anything from `FST.INPUT_TYPE` enumeration. Shorter types will consume less memory. Strings (character sequences) are represented as `FST.INPUT_TYPE.BYTE4` (full unicode codepoints).
      `outputs` - The output type for each input sequence. Applies only if building an FST. For FSA, use `NoOutputs.getSingleton()` and `NoOutputs.getNoOutput()` as the singleton output object.

- ## Method Details

  - ### suffixRAMLimitMB

    public FSTCompiler.Builder<T> suffixRAMLimitMB(double mb)
    The approximate maximum amount of RAM (in MB) to use holding the suffix cache, which enables the FST to share common suffixes. Pass `Double.POSITIVE_INFINITY` to keep all suffixes and create an exactly minimal FST. In this case, the amount of RAM actually used will be bounded by the number of unique suffixes. If you pass a value smaller than the builder would use, the least recently used suffixes will be discarded, thus reducing suffix sharing and creating a non-minimal FST. In this case, the larger the limit, the closer the FST will be to its true minimal size, with diminishing returns as you increase the limit. Pass `0` to disable suffix sharing entirely, but note that the resulting FST can be substantially larger than the minimal FST.

    Note that this is not a precise limit. The current implementation uses hash tables to map the suffixes, and approximates the rough overhead (unused slots) in the hash table.

    Default = `32.0` MB.

  - ### allowFixedLengthArcs

    public FSTCompiler.Builder<T> allowFixedLengthArcs(boolean allowFixedLengthArcs)
    Pass `false` to disable the fixed length arc optimization (binary search or direct addressing) while building the FST; this will make the resulting FST smaller but slower to traverse.

    Default = `true`.

  - ### dataOutput

    public FSTCompiler.Builder<T> dataOutput(DataOutput dataOutput)
    Set the `DataOutput` which is used for low-level writing of FST. If you want the FST to be immediately readable, you need to use `FSTCompiler.getOnHeapReaderWriter(int)`.

    Otherwise you need to construct the corresponding `DataInput` and use the FST constructor to read it.

    Parameters:
      `dataOutput` - the DataOutput
    Returns:
      this builder
    See Also:
      - `FSTCompiler.getOnHeapReaderWriter(int)`

  - ### directAddressingMaxOversizingFactor

    public FSTCompiler.Builder<T> directAddressingMaxOversizingFactor(float factor)
    Overrides the default the maximum oversizing of fixed array allowed to enable direct addressing of arcs instead of binary search.

    Setting this factor to a negative value (e.g. -1) effectively disables direct addressing, only binary search nodes will be created.

    This factor does not determine whether to encode a node with a list of variable length arcs or with fixed length arcs. It only determines the effective encoding of a node that is already known to be encoded with fixed length arcs.

    Default = 1.

  - ### setVersion

    public FSTCompiler.Builder<T> setVersion(int version)
    Expert: Set the codec version. *

  - ### build

    public FSTCompiler<T> build()
    Creates a new `FSTCompiler`.