public class Builder<T> extends Object
NOTE: The algorithm is described at http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.24.3698
The parameterized type T is the output type. See the subclasses ofOutputs.| Modifier and Type | Class and Description | 
|---|---|
| static class  | Builder.Arc<T>Expert: holds a pending (seen but not yet serialized) arc. | 
| static class  | Builder.FreezeTail<T>Expert: this is invoked by Builder whenever a suffix
  is serialized. | 
| static class  | Builder.UnCompiledNode<T>Expert: holds a pending (seen but not yet serialized) Node. | 
| Constructor and Description | 
|---|
| Builder(FST.INPUT_TYPE inputType,
       int minSuffixCount1,
       int minSuffixCount2,
       boolean doShareSuffix,
       boolean doShareNonSingletonNodes,
       int shareMaxTailLength,
       Outputs<T> outputs,
       Builder.FreezeTail<T> freezeTail,
       boolean willPackFST)Instantiates an FST/FSA builder with all the possible tuning and construction
 tweaks. | 
| Builder(FST.INPUT_TYPE inputType,
       Outputs<T> outputs)Instantiates an FST/FSA builder without any pruning. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | add(IntsRef input,
   T output)It's OK to add the same input twice in a row with
  different outputs, as long as outputs impls the merge
  method. | 
| FST<T> | finish()Returns final FST. | 
| int | getMappedStateCount() | 
| long | getTermCount() | 
| int | getTotStateCount() | 
| void | setAllowArrayArcs(boolean b)Pass false to disable the array arc optimization
  while building the FST; this will make the resulting
  FST smaller but slower to traverse. | 
public Builder(FST.INPUT_TYPE inputType, Outputs<T> outputs)
Builder(FST.INPUT_TYPE, int, int, boolean,
 boolean, int, Outputs, FreezeTail, boolean) with
 pruning options turned off.public Builder(FST.INPUT_TYPE inputType, int minSuffixCount1, int minSuffixCount2, boolean doShareSuffix, boolean doShareNonSingletonNodes, int shareMaxTailLength, Outputs<T> outputs, Builder.FreezeTail<T> freezeTail, boolean willPackFST)
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).minSuffixCount1 - If pruning the input graph during construction, this threshold is used for telling
    if a node is kept or pruned. If transition_count(node) >= minSuffixCount1, the node
    is kept.minSuffixCount2 - (Note: only Mike McCandless knows what this one is really doing...)doShareSuffix - If true, the shared suffixes will be compacted into unique paths.
    This requires an additional hash map for lookups in memory. Setting this parameter to
    false creates a single path for all input sequences. This will result in a larger
    graph, but may require less memory and will speed up construction.doShareNonSingletonNodes - Only used if doShareSuffix is true.  Set this to
    true to ensure FST is fully minimal, at cost of more
    CPU and more RAM during building.shareMaxTailLength - Only used if doShareSuffix is true.  Set this to
    Integer.MAX_VALUE to ensure FST is fully minimal, at cost of more
    CPU and more RAM during building.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.willPackFST - Pass true if you will pack the FST before saving.  This
    causes the FST to create additional data structures internally to facilitate packing, but
    it means the resulting FST cannot be saved: it must
    first be packed using FST.pack(int, int)}.public int getTotStateCount()
public long getTermCount()
public int getMappedStateCount()
public void setAllowArrayArcs(boolean b)
public void add(IntsRef input, T output) throws IOException
IOExceptionpublic FST<T> finish() throws IOException
IOException