トークナイザーのリファレンス

トークナイザーは、文字のストリームを受け取り、それを個々のトークン(通常は個々の単語)に分割し、トークンのストリームを出力します。たとえば、whitespaceトークナイザーは、空白を見つけるたびにテキストをトークンに分割します。これは、テキスト"Quick brown fox!"[Quick, brown, fox!]という用語に変換します。

トークナイザーは、次の情報を記録する責任もあります:

  • 各用語の順序または位置(フレーズおよび単語の近接クエリに使用)
  • 用語が表す元の単語の開始および終了文字オフセット(検索スニペットのハイライトに使用)。
  • トークンタイプ、<ALPHANUM><HANGUL>、または<NUM>のような生成された各用語の分類。より単純なアナライザーは、wordトークンタイプのみを生成します。

Elasticsearchには、カスタムアナライザーを構築するために使用できるいくつかの組み込みトークナイザーがあります。

単語指向のトークナイザー

以下のトークナイザーは、通常、フルテキストを個々の単語にトークン化するために使用されます:

  • 標準トークナイザー
  • standardトークナイザーは、Unicodeテキストセグメンテーションアルゴリズムで定義された単語の境界でテキストを用語に分割します。ほとんどの句読点記号を削除します。ほとんどの言語にとって最良の選択です。
  • 文字トークナイザー
  • letterトークナイザーは、文字でない文字に出会うたびにテキストを用語に分割します。
  • 小文字トークナイザー
  • lowercaseトークナイザーは、letterトークナイザーと同様に、文字でない文字に出会うたびにテキストを用語に分割しますが、すべての用語を小文字に変換します。
  • 空白トークナイザー
  • whitespaceトークナイザーは、空白文字に出会うたびにテキストを用語に分割します。
  • UAX URLメールトークナイザー
  • uax_url_emailトークナイザーは、standardトークナイザーと似ていますが、URLとメールアドレスを単一のトークンとして認識します。
  • クラシックトークナイザー
  • classicトークナイザーは、英語の文法に基づくトークナイザーです。
  • タイトークナイザー
  • thaiトークナイザーは、タイ語のテキストを単語に分割します。

部分単語トークナイザー

これらのトークナイザーは、部分単語の一致のためにテキストや単語を小さな断片に分割します:

  • N-グラムトークナイザー
  • ngramトークナイザーは、指定された文字のリスト(例:空白や句読点)のいずれかに出会うと、テキストを単語に分割し、各単語のn-グラムを返します:連続する文字のスライディングウィンドウ、例:quick[qu, ui, ic, ck]
  • エッジN-グラムトークナイザー
  • edge_ngramトークナイザーは、指定された文字のリスト(例:空白や句読点)のいずれかに出会うと、テキストを単語に分割し、単語の開始に固定されたn-グラムを返します、例:quick[q, qu, qui, quic, quick]

構造化テキストトークナイザー

以下のトークナイザーは、フルテキストではなく、識別子、メールアドレス、郵便番号、パスなどの構造化テキストで通常使用されます:

  • キーワードトークナイザー
  • keywordトークナイザーは、「noop」トークナイザーで、与えられたテキストをそのまま受け入れ、単一の用語として正確に同じテキストを出力します。lowercaseのようなトークンフィルターと組み合わせて、分析された用語を正規化することができます。
  • パターントークナイザー
  • patternトークナイザーは、正規表現を使用して、単語区切りに一致するたびにテキストを用語に分割するか、一致するテキストを用語としてキャプチャします。
  • シンプルパターントークナイザー
  • simple_patternトークナイザーは、正規表現を使用して、一致するテキストを用語としてキャプチャします。制限されたサブセットの正規表現機能を使用し、patternトークナイザーよりも一般的に高速です。
  • 文字グループトークナイザー
  • char_groupトークナイザーは、分割する文字のセットを通じて構成可能で、通常は正規表現を実行するよりもコストが低くなります。
  • シンプルパターンスプリットトークナイザー
  • simple_pattern_splitトークナイザーは、simple_patternトークナイザーと同じ制限された正規表現サブセットを使用しますが、一致する部分で入力を分割し、一致を用語として返すのではありません。
  • パストークナイザー
  • path_hierarchyトークナイザーは、ファイルシステムパスのような階層的な値を取り、パス区切りで分割し、ツリー内の各コンポーネントに対して用語を出力します、例:/foo/bar/baz[/foo, /foo/bar, /foo/bar/baz ]