## org.apache.lucene.analysis.th
Class ThaiWordFilter

    java.lang.Object
      org.apache.lucene.util.AttributeSource
          org.apache.lucene.analysis.TokenStream
              org.apache.lucene.analysis.TokenFilter
                  org.apache.lucene.analysis.th.ThaiWordFilter

All Implemented Interfaces:
  Closeable

    public final class ThaiWordFilter

extends TokenFilter

`TokenFilter` that use `BreakIterator` to break each Token that is Thai into separate Token(s) for each Thai word.

Please note: Since matchVersion 3.1 on, this filter no longer lowercases non-thai text. `ThaiAnalyzer` will insert a `LowerCaseFilter` before this filter so the behaviour of the Analyzer does not change. With version 3.1, the filter handles position increments correctly.

WARNING: this filter may not be supported by all JREs. It is known to work with Sun/Oracle and Harmony JREs. If your application needs to be fully portable, consider using ICUTokenizer instead, which uses an ICU Thai BreakIterator that will always be available.

Nested Class Summary

Nested classes/interfaces inherited from class org.apache.lucene.util.AttributeSource
`AttributeSource.AttributeFactory, AttributeSource.State`

Field Summary
`static boolean` `DBBI_AVAILABLE` True if the JRE supports a working dictionary-based breakiterator for Thai.

Fields inherited from class org.apache.lucene.analysis.TokenFilter
`input`

Constructor Summary
`ThaiWordFilter(TokenStream input)` Deprecated. Use the ctor with `matchVersion` instead!
`ThaiWordFilter(Version matchVersion, TokenStream input)` Creates a new ThaiWordFilter with the specified match version.

Method Summary
`boolean` `incrementToken()` Consumers (i.e., `IndexWriter`) use this method to advance the stream to the next token.
`void` `reset()` Reset the filter as well as the input TokenStream.

Methods inherited from class org.apache.lucene.analysis.TokenFilter
`close, end`

Methods inherited from class org.apache.lucene.util.AttributeSource
`addAttribute, addAttributeImpl, captureState, clearAttributes, cloneAttributes, copyTo, equals, getAttribute, getAttributeClassesIterator, getAttributeFactory, getAttributeImplsIterator, hasAttribute, hasAttributes, hashCode, reflectAsString, reflectWith, restoreState, toString`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### DBBI_AVAILABLE

    public static final boolean DBBI_AVAILABLE

  True if the JRE supports a working dictionary-based breakiterator for Thai. If this is false, this filter will not work at all!

Constructor Detail

### ThaiWordFilter

    @Deprecated
    public ThaiWordFilter(TokenStream input)

  Deprecated. Use the ctor with `matchVersion` instead!

  Creates a new ThaiWordFilter that also lowercases non-thai text.

### ThaiWordFilter

    public ThaiWordFilter(Version matchVersion,
                          TokenStream input)

  Creates a new ThaiWordFilter with the specified match version.

Method Detail

### incrementToken

    public boolean incrementToken()
                           throws IOException

  Description copied from class: `TokenStream`
  Consumers (i.e., `IndexWriter`) use this method to advance the stream to the next token. Implementing classes must implement this method and update the appropriate `AttributeImpl`s with the attributes of the next token.

  The producer must make no assumptions about the attributes after the method has been returned: the caller may arbitrarily change it. If the producer needs to preserve the state for subsequent calls, it can use `AttributeSource.captureState()` to create a copy of the current attribute state.

  This method is called for every token of a document, so an efficient implementation is crucial for good performance. To avoid calls to `AttributeSource.addAttribute(Class)` and `AttributeSource.getAttribute(Class)`, references to all `AttributeImpl`s that this stream uses should be retrieved during instantiation.

  To ensure that filters and consumers know which attributes are available, the attributes must be added during instantiation. Filters and consumers are not required to check for availability of attributes in `TokenStream.incrementToken()`.

  Specified by:
    `incrementToken` in class `TokenStream`
  Returns:
    false for end of stream; true otherwise
  Throws:
    `IOException`

### reset

    public void reset()
               throws IOException

  Description copied from class: `TokenFilter`
  Reset the filter as well as the input TokenStream.

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