テキスト分析の概要

テキスト分析により、Elasticsearchは全文検索を実行でき、検索は正確な一致だけでなく、すべての関連する結果を返します。

Quick fox jumpsを検索すると、A quick brown fox jumps over the lazy dogを含む文書が欲しいと思うでしょうし、fast foxfoxes leapのような関連する単語を含む文書も欲しいかもしれません。

トークン化

分析はトークン化を通じて全文検索を可能にします:テキストをトークンと呼ばれる小さな部分に分解します。ほとんどの場合、これらのトークンは個々の単語です。

the quick brown fox jumpsというフレーズを単一の文字列としてインデックスし、ユーザーがquick foxを検索すると、それは一致とは見なされません。しかし、フレーズをトークン化し、各単語を別々にインデックスすると、クエリ文字列内の用語を個別に検索できます。これは、quick foxfox brown、または他のバリエーションの検索によって一致させることができることを意味します。

正規化

トークン化は個々の用語の一致を可能にしますが、各トークンは依然として文字通り一致します。これは次のことを意味します:

  • Quickの検索はquickと一致しませんが、どちらの用語も互いに一致することを望んでいる可能性があります。
  • foxfoxesは同じ語根を共有していますが、foxesの検索はfoxと一致せず、その逆も同様です。
  • jumpsの検索はleapsと一致しません。語根は共有していませんが、同義語であり、似た意味を持っています。

これらの問題を解決するために、テキスト分析はこれらのトークンを標準形式に正規化できます。これにより、検索用語と正確には同じではないが、十分に類似して関連性のあるトークンを一致させることができます。例えば:

  • Quickは小文字に変換できます:quick
  • foxesは語幹化されるか、語根に減少できます:fox
  • jumpleapは同義語であり、単一の単語としてインデックスできます:jump

検索用語が意図した通りにこれらの単語と一致するように、クエリ文字列にも同じトークン化と正規化のルールを適用できます。例えば、Foxes leapの検索はfox jumpの検索に正規化できます。

テキスト分析のカスタマイズ

テキスト分析はアナライザーによって実行され、プロセス全体を管理するルールのセットです。

Elasticsearchには、標準アナライザーと呼ばれるデフォルトのアナライザーが含まれており、ほとんどのユースケースに対してすぐに効果的に機能します。

検索体験をカスタマイズしたい場合は、別の組み込みアナライザーを選択するか、カスタムアナライザーを構成することもできます。カスタムアナライザーを使用すると、分析プロセスの各ステップを制御できます。これには次のことが含まれます:

  • トークン化の前のテキストの変更
  • テキストがトークンに変換される方法
  • インデックスまたは検索の前にトークンに対して行われる正規化の変更