org.apache.lucene.analysis.cjk

## Class CJKBigramFilter

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

All Implemented Interfaces:
  Closeable, AutoCloseable

    public final class CJKBigramFilter
    extends TokenFilter

Forms bigrams of CJK terms that are generated from StandardTokenizer or ICUTokenizer.

CJK types are set by these tokenizers, but you can also use `CJKBigramFilter(TokenStream, int)` to explicitly control which of the CJK scripts are turned into bigrams.

By default, when a CJK character has no adjacent characters to form a bigram, it is output in unigram form. If you want to always output both unigrams and bigrams, set the `outputUnigrams` flag in `CJKBigramFilter(TokenStream, int, boolean)`. This can be used for a combined unigram+bigram approach.

In all cases, all non-CJK input is passed thru unmodified.

### Nested Class Summary

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

`AttributeSource.AttributeFactory, AttributeSource.State`

### Field Summary

Fields
`static String` `DOUBLE_TYPE` when we emit a bigram, its then marked as this type
`static int` `HAN` bigram flag for Han Ideographs
`static int` `HANGUL` bigram flag for Hangul
`static int` `HIRAGANA` bigram flag for Hiragana
`static int` `KATAKANA` bigram flag for Katakana
`static String` `SINGLE_TYPE` when we emit a unigram, its then marked as this type

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

`input`

### Constructor Summary

Constructors
Constructor and Description
`CJKBigramFilter(TokenStream in)` Calls `CJKBigramFilter(in, HAN | HIRAGANA | KATAKANA | HANGUL)`
`CJKBigramFilter(TokenStream in, int flags)` Calls `CJKBigramFilter(in, flags, false)`
`CJKBigramFilter(TokenStream in, int flags, boolean outputUnigrams)` Create a new CJKBigramFilter, specifying which writing systems should be bigrammed, and whether or not unigrams should also be output.

### Method Summary

Methods
`boolean` `incrementToken()`
`void` `reset()`

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

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

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

### Field Detail

#### HAN

    public static final int HAN

bigram flag for Han Ideographs

See Also:
  Constant Field Values

#### HIRAGANA

    public static final int HIRAGANA

bigram flag for Hiragana

See Also:
  Constant Field Values

#### KATAKANA

    public static final int KATAKANA

bigram flag for Katakana

See Also:
  Constant Field Values

#### HANGUL

    public static final int HANGUL

bigram flag for Hangul

See Also:
  Constant Field Values

#### DOUBLE_TYPE

    public static final String DOUBLE_TYPE

when we emit a bigram, its then marked as this type

See Also:
  Constant Field Values

#### SINGLE_TYPE

    public static final String SINGLE_TYPE

when we emit a unigram, its then marked as this type

See Also:
  Constant Field Values

### Constructor Detail

#### CJKBigramFilter

    public CJKBigramFilter(TokenStream in)

Calls `CJKBigramFilter(in, HAN | HIRAGANA | KATAKANA | HANGUL)`

#### CJKBigramFilter

    public CJKBigramFilter(TokenStream in,
                   int flags)

Calls `CJKBigramFilter(in, flags, false)`

#### CJKBigramFilter

    public CJKBigramFilter(TokenStream in,
                   int flags,
                   boolean outputUnigrams)

Create a new CJKBigramFilter, specifying which writing systems should be bigrammed, and whether or not unigrams should also be output.

Parameters:
  `flags` - OR'ed set from `HAN`, `HIRAGANA`, `KATAKANA`, `HANGUL`
  `outputUnigrams` - true if unigrams for the selected writing systems should also be output. when this is false, this is only done when there are no adjacent characters to form a bigram.

### Method Detail

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