org.apache.lucene.util.fst

## Class BytesRefFSTEnum<T>

- java.lang.Object
- - org.apache.lucene.util.fst.BytesRefFSTEnum<T>

    public final class BytesRefFSTEnum<T>
    extends Object

Enumerates all input (BytesRef) + output pairs in an FST.

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

### Nested Class Summary

Nested Classes
`static class` `BytesRefFSTEnum.InputOutput<T>` Holds a single input (BytesRef) + output pair.

### Field Summary

Fields
`protected FST.Arc<T>[]` `arcs`
`protected FST<T>` `fst`
`protected FST.BytesReader` `fstReader`
`protected T` `NO_OUTPUT`
`protected T[]` `output`
`protected FST.Arc<T>` `scratchArc`
`protected int` `targetLength`
`protected int` `upto`

### Constructor Summary

Constructors
Constructor and Description
`BytesRefFSTEnum(FST<T> fst)` doFloor controls the behavior of advance: if it's true doFloor is true, advance positions to the biggest term before target.

### Method Summary

Methods
`BytesRefFSTEnum.InputOutput<T>` `current()`
`protected void` `doNext()`
`protected void` `doSeekCeil()` Seeks to smallest term that's >= target.
`protected boolean` `doSeekExact()` Seeks to exactly target term.
`protected void` `doSeekFloor()` Seeks to largest term that's <= target.
`protected int` `getCurrentLabel()`
`protected int` `getTargetLabel()`
`protected void` `grow()`
`BytesRefFSTEnum.InputOutput<T>` `next()`
`protected void` `rewindPrefix()` Rewinds enum state to match the shared prefix between current term and target term
`BytesRefFSTEnum.InputOutput<T>` `seekCeil(BytesRef target)` Seeks to smallest term that's >= target.
`BytesRefFSTEnum.InputOutput<T>` `seekExact(BytesRef target)` Seeks to exactly this term, returning null if the term doesn't exist.
`BytesRefFSTEnum.InputOutput<T>` `seekFloor(BytesRef target)` Seeks to biggest term that's <= target.
`protected void` `setCurrentLabel(int label)`

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

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

### Field Detail

#### fst

    protected final FST<T> fst

#### arcs

    protected FST.Arc<T>[] arcs

#### output

    protected T[] output

#### NO_OUTPUT

    protected final T NO_OUTPUT

#### fstReader

    protected final FST.BytesReader fstReader

#### scratchArc

    protected final FST.Arc<T> scratchArc

#### upto

    protected int upto

#### targetLength

    protected int targetLength

### Constructor Detail

#### BytesRefFSTEnum

    public BytesRefFSTEnum(FST<T> fst)

doFloor controls the behavior of advance: if it's true doFloor is true, advance positions to the biggest term before target.

### Method Detail

#### current

    public BytesRefFSTEnum.InputOutput<T> current()

#### next

    public BytesRefFSTEnum.InputOutput<T> next()
                                        throws IOException

Throws:
  `IOException`

#### seekCeil

    public BytesRefFSTEnum.InputOutput<T> seekCeil(BytesRef target)
                                            throws IOException

Seeks to smallest term that's >= target.

Throws:
  `IOException`

#### seekFloor

    public BytesRefFSTEnum.InputOutput<T> seekFloor(BytesRef target)
                                             throws IOException

Seeks to biggest term that's <= target.

Throws:
  `IOException`

#### seekExact

    public BytesRefFSTEnum.InputOutput<T> seekExact(BytesRef target)
                                             throws IOException

Seeks to exactly this term, returning null if the term doesn't exist. This is faster than using `seekFloor(org.apache.lucene.util.BytesRef)` or `seekCeil(org.apache.lucene.util.BytesRef)` because it short-circuits as soon the match is not found.

Throws:
  `IOException`

#### getTargetLabel

    protected int getTargetLabel()

#### getCurrentLabel

    protected int getCurrentLabel()

#### setCurrentLabel

    protected void setCurrentLabel(int label)

#### grow

    protected void grow()

#### rewindPrefix

    protected final void rewindPrefix()
                               throws IOException

Rewinds enum state to match the shared prefix between current term and target term

Throws:
  `IOException`

#### doNext

    protected void doNext()
                   throws IOException

Throws:
  `IOException`

#### doSeekCeil

    protected void doSeekCeil()
                       throws IOException

Seeks to smallest term that's >= target.

Throws:
  `IOException`

#### doSeekFloor

    protected void doSeekFloor()
                        throws IOException

Seeks to largest term that's <= target.

Throws:
  `IOException`

#### doSeekExact

    protected boolean doSeekExact()
                           throws IOException

Seeks to exactly target term.

Throws:
  `IOException`