The flatten_graph token filter accepts an arbitrary graph token
stream, such as that produced by
Synonym Graph Token Filter, and flattens it into a single
linear chain of tokens suitable for indexing.

This is a lossy process, as separate side paths are squashed on top of
one another, but it is necessary if you use a graph token stream
during indexing because a Lucene index cannot currently represent a
graph. For this reason, it’s best to apply graph analyzers only at
search time because that preserves the full graph structure and gives
correct matches for proximity queries.