Solrにおけるドキュメント解析
以下のセクションでは、Solrがテキストデータをどのように分解し、処理するかについて説明します。理解すべき主な概念は、アナライザー、トークナイザー、フィルターの3つです。
-
フィールドアナライザーは、ドキュメントがインデックスされるインジェスト時と、クエリ時の両方で使用されます。アナライザーは、フィールドのテキストを調べ、トークンストリームを生成します。アナライザーは、単一のクラスである場合もあれば、一連のトークナイザーおよびフィルタークラスで構成されている場合もあります。
-
トークナイザーは、フィールドデータを字句単位、つまりトークンに分割します。
-
フィルターは、トークンのストリームを調べ、保持、変換、破棄、または新しいトークンを作成します。トークナイザーとフィルターは、パイプラインまたはチェーンを形成するために組み合わされ、一方の出力が次の入力になります。このようなトークナイザーとフィルターのシーケンスはアナライザーと呼ばれ、アナライザーの結果の出力は、クエリ結果を照合したり、インデックスを構築したりするために使用されます。
アナライザー、トークナイザー、フィルターの使用
分析プロセスはインデックス作成とクエリの両方で使用されますが、両方の操作で同じ分析プロセスを使用する必要はありません。インデックス作成では、単語を単純化または正規化することがよくあります。たとえば、すべての文字を小文字に設定したり、句読点とアクセントを削除したり、単語を語幹にマッピングしたりするなどです。これにより、「ram」、「Ram」、「RAM」がすべて「ram」のクエリに一致するため、リコール率が向上します。クエリ時の精度を高めるために、フィルターを使用すると、たとえば、オスの羊に関心があり、ランダムアクセスメモリには関心がない場合、すべて大文字の頭字語を無視するなどして、一致を絞り込むことができます。
分析プロセスによって出力されるトークンは、そのフィールドの値または用語を定義し、新しいドキュメントが追加されたときにそれらの用語のインデックスを作成したり、クエリ対象の用語を含むドキュメントを特定したりするために使用されます。