LoginSignup
35
30

More than 5 years have passed since last update.

ElasticsearchのAnalyzer, Tokenizer, Token Filters, Char Filtersの一覧

Posted at

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: トークン化された文字列を逆にして出力する.pennepと出力される。
  • 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: 正規表現で置き換える

参考

35
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
30