Package org.apache.lucene.analysis.miscellaneous

# Class ConditionalTokenFilter

java.lang.Object
org.apache.lucene.util.AttributeSource
org.apache.lucene.analysis.TokenStream
org.apache.lucene.analysis.TokenFilter
org.apache.lucene.analysis.miscellaneous.ConditionalTokenFilter

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Unwrappable<TokenStream>`

Direct Known Subclasses:
  `ProtectedTermFilter`

public abstract class ConditionalTokenFilter extends TokenFilter
Allows skipping TokenFilters based on the current set of attributes.

To use, implement the `shouldFilter()` method. If it returns `true`, then calling `incrementToken()` will use the wrapped TokenFilter(s) to make changes to the tokenstream. If it returns `false`, then the wrapped filter(s) will be skipped.

- ## Nested Class Summary

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

  `AttributeSource.State`

- ## Field Summary

  ### 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
  Modifier
  Constructor
  Description
  `protected`
  `ConditionalTokenFilter(TokenStream input, Function<TokenStream,TokenStream> inputFactory)`
  Create a new ConditionalTokenFilter

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  `void`
  `end()`
  `final boolean`
  `incrementToken()`
  `void`
  `reset()`
  `protected abstract boolean`
  `shouldFilter()`
  Whether or not to execute the wrapped TokenFilter(s) for the current token

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

  `unwrap`

  ### 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`

- ## Constructor Details

  - ### ConditionalTokenFilter

    protected ConditionalTokenFilter(TokenStream input, Function<TokenStream,TokenStream> inputFactory)
    Create a new ConditionalTokenFilter
    Parameters:
      `input` - the input TokenStream
      `inputFactory` - a factory function to create the wrapped filter(s)

- ## Method Details

  - ### shouldFilter

    protected abstract boolean shouldFilter() throws IOException
    Whether or not to execute the wrapped TokenFilter(s) for the current token
    Throws:
      `IOException`

  - ### reset

    public void reset() throws IOException
    Overrides:
      `reset` in class `TokenFilter`
    Throws:
      `IOException`

  - ### end

    public void end() throws IOException
    Overrides:
      `end` in class `TokenFilter`
    Throws:
      `IOException`

  - ### close

    public void close() throws IOException
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Overrides:
      `close` in class `TokenFilter`
    Throws:
      `IOException`

  - ### incrementToken

    public final boolean incrementToken() throws IOException
    Specified by:
      `incrementToken` in class `TokenStream`
    Throws:
      `IOException`