org.apache.lucene.analysis

## Class GraphTokenFilter

- java.lang.Object
- - org.apache.lucene.util.AttributeSource
  - - org.apache.lucene.analysis.TokenStream
    - - org.apache.lucene.analysis.TokenFilter
      - - org.apache.lucene.analysis.GraphTokenFilter

All Implemented Interfaces:
  Closeable, AutoCloseable

    public abstract class GraphTokenFilter
    extends TokenFilter

An abstract TokenFilter that exposes its input stream as a graph Call `incrementBaseToken()` to move the root of the graph to the next position in the TokenStream, `incrementGraphToken()` to move along the current graph, and `incrementGraph()` to reset to the next graph based at the current root. For example, given the stream 'a b/c:2 d e`, then with the base token at 'a', incrementGraphToken() will produce the stream 'a b d e', and then after calling incrementGraph() will produce the stream 'a c e'.

### Nested Class Summary

### Nested classes/interfaces inherited from class org.apache.lucene.util.AttributeSource

`AttributeSource.State`

### Field Summary

Fields
`static int` `MAX_GRAPH_STACK_SIZE` The maximum permitted number of routes through a graph
`static int` `MAX_TOKEN_CACHE_SIZE` The maximum permitted read-ahead in the token stream

### Fields inherited from class org.apache.lucene.analysis.TokenFilter

`input`

### Fields inherited from class org.apache.lucene.analysis.TokenStream

`DEFAULT_TOKEN_ATTRIBUTE_FACTORY`

### Constructor Summary

Constructors
Constructor and Description
`GraphTokenFilter(TokenStream input)` Create a new GraphTokenFilter

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `end()` This method is called by the consumer after the last token has been consumed, after `TokenStream.incrementToken()` returned `false` (using the new `TokenStream` API).
`int` `getTrailingPositions()` Return the number of trailing positions at the end of the graph NB this should only be called after `incrementGraphToken()` has returned `false`
`protected boolean` `incrementBaseToken()` Move the root of the graph to the next token in the wrapped TokenStream
`protected boolean` `incrementGraph()` Reset to the root token again, and move down the next route through the graph
`protected boolean` `incrementGraphToken()` Move to the next token in the current route through the graph
`void` `reset()` This method is called by a consumer before it begins consumption using `TokenStream.incrementToken()`.

### Methods inherited from class org.apache.lucene.analysis.TokenFilter

`close`

### Methods inherited from class org.apache.lucene.analysis.TokenStream

`incrementToken`

### Methods inherited from class org.apache.lucene.util.AttributeSource

`addAttribute, addAttributeImpl, captureState, clearAttributes, cloneAttributes, copyTo, endAttributes, equals, getAttribute, getAttributeClassesIterator, getAttributeFactory, getAttributeImplsIterator, hasAttribute, hasAttributes, hashCode, reflectAsString, reflectWith, removeAllAttributes, restoreState, toString`

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### MAX_GRAPH_STACK_SIZE

    public static final int MAX_GRAPH_STACK_SIZE

The maximum permitted number of routes through a graph

See Also:
  Constant Field Values

#### MAX_TOKEN_CACHE_SIZE

    public static final int MAX_TOKEN_CACHE_SIZE

The maximum permitted read-ahead in the token stream

See Also:
  Constant Field Values

### Constructor Detail

#### GraphTokenFilter

    public GraphTokenFilter(TokenStream input)

Create a new GraphTokenFilter

### Method Detail

#### incrementBaseToken

    protected final boolean incrementBaseToken()
                                        throws IOException

Move the root of the graph to the next token in the wrapped TokenStream

Returns:
  `false` if the underlying stream is exhausted
Throws:
  `IOException`

#### incrementGraphToken

    protected final boolean incrementGraphToken()
                                         throws IOException

Move to the next token in the current route through the graph

Returns:
  `false` if there are not more tokens in the current graph
Throws:
  `IOException`

#### incrementGraph

    protected final boolean incrementGraph()
                                    throws IOException

Reset to the root token again, and move down the next route through the graph

Returns:
  false if there are no more routes through the graph
Throws:
  `IOException`

#### getTrailingPositions

    public int getTrailingPositions()

Return the number of trailing positions at the end of the graph NB this should only be called after `incrementGraphToken()` has returned `false`

#### end

    public void end()
             throws IOException

Description copied from class: `TokenFilter`
This method is called by the consumer after the last token has been consumed, after `TokenStream.incrementToken()` returned `false` (using the new `TokenStream` API). Streams implementing the old API should upgrade to use this feature.

This method can be used to perform any end-of-stream operations, such as setting the final offset of a stream. The final offset of a stream might differ from the offset of the last token eg in case one or more whitespaces followed after the last token, but a WhitespaceTokenizer was used.

Additionally any skipped positions (such as those removed by a stopfilter) can be applied to the position increment, or any adjustment of other attributes where the end-of-stream value may be important.

If you override this method, always call `super.end()`.

NOTE: The default implementation chains the call to the input TokenStream, so be sure to call `super.end()` first when overriding this method.

Overrides:
  `end` in class `TokenFilter`
Throws:
  `IOException` - If an I/O error occurs

#### reset

    public void reset()
               throws IOException

Description copied from class: `TokenFilter`
This method is called by a consumer before it begins consumption using `TokenStream.incrementToken()`.

Resets this stream to a clean state. Stateful implementations must implement this method so that they can be reused, just as if they had been created fresh.

If you override this method, always call `super.reset()`, otherwise some internal state will not be correctly reset (e.g., `Tokenizer` will throw `IllegalStateException` on further usage).

NOTE: The default implementation chains the call to the input TokenStream, so be sure to call `super.reset()` when overriding this method.

Overrides:
  `reset` in class `TokenFilter`
Throws:
  `IOException`