SynonymGraphFilter (Lucene 10.5.0 common API)
Description: declaration: package: org.apache.lucene.analysis.synonym, class: SynonymGraphFilter

Package org.apache.lucene.analysis.synonym

# Class SynonymGraphFilter

java.lang.Object
org.apache.lucene.util.AttributeSource
org.apache.lucene.analysis.TokenStream
org.apache.lucene.analysis.TokenFilter
org.apache.lucene.analysis.synonym.SynonymGraphFilter

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

public final class SynonymGraphFilter extends TokenFilter
Applies single- or multi-token synonyms from a `SynonymMap` to an incoming `TokenStream`, producing a fully correct graph output. This is a replacement for `SynonymFilter`, which produces incorrect graphs for multi-token synonyms.

However, if you use this during indexing, you must follow it with `FlattenGraphFilter` to squash tokens on top of one another like `SynonymFilter`, because the indexer can't directly consume a graph. To get fully correct positional queries when your synonym replacements are multiple tokens, you should instead apply synonyms using this `TokenFilter` at query time and translate the resulting graph to a `TermAutomatonQuery` e.g. using `TokenStreamToTermAutomatonQuery`.

NOTE: this cannot consume an incoming graph; results will be undefined.

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

- ## Nested Class Summary

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

  `AttributeSource.State`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `TYPE_SYNONYM`

  ### 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
  Description
  `SynonymGraphFilter(TokenStream input, SynonymMap synonyms, boolean ignoreCase)`
  Apply previously built synonyms to incoming tokens.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `incrementToken()`
  `void`
  `reset()`

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

  `close, end, 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`

- ## Field Details

  - ### TYPE_SYNONYM

    public static final String TYPE_SYNONYM
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### SynonymGraphFilter

    public SynonymGraphFilter(TokenStream input, SynonymMap synonyms, boolean ignoreCase)
    Apply previously built synonyms to incoming tokens.
    Parameters:
      `input` - input tokenstream
      `synonyms` - synonym map
      `ignoreCase` - case-folds input for matching with `Character.toLowerCase(int)`. Note, if you set this to true, it's your responsibility to lowercase the input entries when you create the `SynonymMap`

- ## Method Details

  - ### incrementToken

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

  - ### reset

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