テキスト分析の概要
テキスト分析により、Elasticsearchは全文検索を実行でき、検索は正確な一致だけでなく、すべての関連する結果を返します。
Quick fox jumps
を検索すると、A quick brown fox jumps over the lazy dog
を含む文書が欲しいと思うでしょうし、fast fox
やfoxes leap
のような関連する単語を含む文書も欲しいかもしれません。
トークン化
分析はトークン化を通じて全文検索を可能にします:テキストをトークンと呼ばれる小さな部分に分解します。ほとんどの場合、これらのトークンは個々の単語です。
the quick brown fox jumps
というフレーズを単一の文字列としてインデックスし、ユーザーがquick fox
を検索すると、それは一致とは見なされません。しかし、フレーズをトークン化し、各単語を別々にインデックスすると、クエリ文字列内の用語を個別に検索できます。これは、quick fox
、fox brown
、または他のバリエーションの検索によって一致させることができることを意味します。
正規化
トークン化は個々の用語の一致を可能にしますが、各トークンは依然として文字通り一致します。これは次のことを意味します:
Quick
の検索はquick
と一致しませんが、どちらの用語も互いに一致することを望んでいる可能性があります。fox
とfoxes
は同じ語根を共有していますが、foxes
の検索はfox
と一致せず、その逆も同様です。jumps
の検索はleaps
と一致しません。語根は共有していませんが、同義語であり、似た意味を持っています。
これらの問題を解決するために、テキスト分析はこれらのトークンを標準形式に正規化できます。これにより、検索用語と正確には同じではないが、十分に類似して関連性のあるトークンを一致させることができます。例えば:
Quick
は小文字に変換できます:quick
。foxes
は語幹化されるか、語根に減少できます:fox
。jump
とleap
は同義語であり、単一の単語としてインデックスできます:jump
。
検索用語が意図した通りにこれらの単語と一致するように、クエリ文字列にも同じトークン化と正規化のルールを適用できます。例えば、Foxes leap
の検索はfox jump
の検索に正規化できます。
テキスト分析のカスタマイズ
テキスト分析はアナライザーによって実行され、プロセス全体を管理するルールのセットです。
Elasticsearchには、標準アナライザーと呼ばれるデフォルトのアナライザーが含まれており、ほとんどのユースケースに対してすぐに効果的に機能します。
検索体験をカスタマイズしたい場合は、別の組み込みアナライザーを選択するか、カスタムアナライザーを構成することもできます。カスタムアナライザーを使用すると、分析プロセスの各ステップを制御できます。これには次のことが含まれます:
- トークン化の前のテキストの変更
- テキストがトークンに変換される方法
- インデックスまたは検索の前にトークンに対して行われる正規化の変更