memo: 2.3のドキュメントを参照して書いてます
Analyzers
Analyzerは1つのTokenizerと0個以上のToken Filters、0個以上のCharacter Filtersで構成される。イメージは以下。
input => Character Filters => Tokenizer => Token Filters => output
Analyzerは以下の種類がある。それぞれの構成要素も入れた
- Standard Analyzer
- Character Filters: なし
- Tokenizer: Standard Tokenizer
- Token Filters:
- Standard Token Filter
- Lowercase Token Filter
- Stop Token Filter
- Simple Analyzer
- Character Filters: なし
- Tokenizer: Lowercase Tokenizer
- Token Filters: なし
- Whitespace Analyzer
- Character Filters: なし
- Tokenizer: Whitespace Tokenizer
- Token Filters: なし
- Stop Analyzer
- Character Filters:
- Tokenizer: Lowercase Tokenizer
- Token Filters: Stop Token Filter
- Keyword Analyzer
- Character Filters: なし
- Tokenizer: Keyword Tokenizer
- Token Filters: なし
- Pattern Analyzer
- Character Filters:
- Tokenizer: Pattern Tokenizer
- Token Filters: 設定で使うかどうか変えれる
- Lowercase Token Filter
- Stop Token Filter
- Language Analyzers: 各言語に特化したAnalyzer. ドキュメントを見ればどのようにカスタムAnalyzerで置き換えれるか書いてある
- Snowball Analyzer
- Character Filters:
- Tokenizer: Standard Tokenizer
- Token Filters:
- Standard Token Filter
- Lowercase Token Filter
- Stop Token Filter
- Snowball Token Filter
- Custom Analyzer: 自分でChar Filter, Tokenizer, Token Filtersを定義する
Tokenizers
以下の種類がある
- Standard Tokenizer: 文法に基づいたトークン化を行う。ほとんどのヨーロッパ言語に適用している。
- Edge NGram Tokenizer: 基本はNグラムと同じだが、文の始まりトークンの最初の文字列からはじまるものだけをトークン化する
- Keyword Tokenizer: 文字列全体をトークンとして扱う
- Letter Tokenizer: 文字列でないもので区切ったものをトークンとして扱う
- Lowercase Tokenizer: Letter TokenizerとLower Case Token Filterを一緒に使ったときと同じ効果がある。2つを別々で使うより一緒にするほうがパフォーマンスがいい。
- NGram Tokenizer: Nグラムのトークナイザー。
- Whitespace Tokenizer: スペースで分ける
- Pattern Tokenizer: 正規表現でトークン化を行う
- UAX Email URL Tokenizer: Standard Tokenizerと同じように振る舞うが、emailとURLは1つのトークンとして扱う
- Path Hierarchy Tokenizer: パスを階層でわけてそれをトークンとして扱う。例えば
/something/something/else
というパスは/something
,/something/something
,/something/something/else
という3つのトークンとして扱われる。 - Classic Tokenizer: 省略
- Thai Tokenizer: 省略
Token Filters
以下の種類がある
- Standard Token Filter: Standard Tokenizerで抽出されたトークンを正規化する。ただ、現状のバージョンでは何もしていない
- ASCII Folding Token Filter: ASCII文字でないものをASCII文字に置き換える。Pokémon GOはPokemon GOになる。
- Length Token Filter: 長過ぎたり、短すぎたりする文字列を削除する
- Lowercase Token Filter: 小文字に正規化する
- Uppercase Token Filter: 大文字に正規化する
- NGram Token Filter: Nグラムで正規化する。デフォルトでは最小1, 最大2でトークンをフィルタする。
- Edge NGram Token Filter: Nグラムで正規化するが、トークンの最初のものだけにNグラムを適用する。
- Porter Stem Token Filter: ポーターのステムアルゴリズムによりトークンをステム化する。
- Shingle Token Filter: トークン化されたものをつなぎあわせたものもトークンとして扱う。
This is a pen
なら、This
,This is
... というふうに隣り合ったものがトークンとして扱われる。 - Stop Token Filter: ストップワードをフィルタする。
- Word Delimiter Token Filter: ハイフンなどがついているワードを分ける。分けるのに使用する文字は指定できる。
- Stemmer Token Filter: ステム化するフィルタ。各言語のものが使える。
- Stemmer Override Token Filter: カスタムした文字列でステム化できる
- Keyword Marker Token Filter: 特定のキーワードがステム化されるのを防ぐ
- Keyword Repeat Token Filter: 省略
- KStem Token Filter: 英語でパフォーマンスのたかいステム化フィルタ
- Snowball Token Filter: ステムワード(語幹: 語幹が変化するまえの基本形の形)を使ってフィルタする。各言語対応している(日本語はない).
- Phonetic Token Filter: 発音上の分け方でわける。プラグインでのインストールが必要。
- Synonym Token Filter: シノニムを扱いやすくするためのフィルタ. SolrとWordNetフォーマットでシノニムを使用できる。
- Compound Word Token Filter: 省略
- Reverse Token Filter: トークン化された文字列を逆にして出力する.
pen
はnep
と出力される。 - Elision Token Filter: Elison(フランス語などで使用される冠詞)を削除する
- Truncate Token Filter: 指定の文字列でトークンをフィルタする
- Unique Token Filter: 省略
- Pattern Capture Token Filter: 省略
- Pattern Replace Token Filter: 正規表現で置き換えるフィルタ
- Trim Token Filter: トークンのまわりのスペースを削除する
- Limit Token Count Token Filter: 1つのドキュメントに対してトークンの数を制限する
- Hunspell Token Filter: Hunspellのステム化を使ってフィルタする。
- Common Grams Token Filter: 省略
- Normalization Token Filter: 省略
- CJK Width Token Filter: CJKとはChinese, Japanese, Koreanのこと。全角英数字を半角へ、半角カナを全角カナへフィルタする。
- CJK Bigram Token Filter: 省略
- Delimited Payload Token Filter: 省略
- Keep Words Token Filter: 省略
- Keep Types Token Filter: 省略
- Classic Token Filter: 省略
- Apostrophe Token Filter: Apostrophe(')で分ける
- Decimal Digit Token Filter: Unicodeの0-9を0-9へフィルタする
Character Filters
以下の種類がある。
- Mapping Char Filter: 特定のテキストを指定のテキストに置き換える. ハッシュで、keyを置き換え前、valueを置き換え後のものして指定する
- HTML Strip Char Filter: HTMLタグを摘出する
- Pattern Replace Char Filter: 正規表現で置き換える