形態素の重み付け分析機能は、検索クエリに含まれる各形態素の重要度を評価し、重みとして数値化します。OpenSearch は、重要度が低いと判断された形態素をドキュメント取得の際に使用しないことがあります。これにより、取得対象となるドキュメント数を増やすことができます。もし、検索クエリに重要度の低い形態素が含まれ、かつその形態素がドキュメント取得の対象となった場合、検索結果として得られるドキュメント数が少なくなる可能性があります。
概要
例えば、「opensearch good or not」という検索クエリを入力した場合を考えます。
形態素の重み付け分析機能によって書き換えられる前の元のクエリ句は query=default:'opensearch' AND default:'good or not' です。
形態素の重み付け分析機能によって元のクエリ句が書き換えられると、新しいクエリ句は query=default:'opensearch' RANK default:'good or not' になります。
次に、OpenSearch は term opensearch を含むすべてのドキュメントを取得します。
操作手順
-
OpenSearch コンソールにログインし、左側のナビゲーションウィンドウで [取得設定] > [クエリ分析設定] の順に移動します。アプリケーション名とアプリケーションタイプ (オンラインまたはオフライン) を選択し、[作成] をクリックします。
-
[ルール追加] パネルで、ルール名を入力し、インデックスを選択し、[ワードの重み] を選択してから [OK] をクリックします。
[クエリ書き換え戦略] で [AND] を選択します。[形態素の重み] 設定パネルで、[組み込み辞書] を選択します。
-
ルールが作成されたら、検索テストを実行します。
[クエリ分析設定] リストで対象のルールを見つけ、[操作] 列の [検索テスト] をクリックします。[検索テスト] ページで、アプリケーション (例:
changyu3) と [オンラインアプリケーション] タイプを選択し、クエリ (例:default:'Is OpenSearch good?') を入力して [検索] をクリックします。ページ下部に、実際に解析されたクエリ (例:(default:'opensearch' RANK default:'good')) が表示されます。これは、クエリがopensearchとgoodにトークン化され、RANK オペレーターで結合されたことを示します。ポップアップウィンドウでは、元のクエリ、インデックス名、[クエリ書き換え] の結果、および [スペル訂正]、[正規化]、[トークン化]、[ストップワード]、[シノニム]、[カテゴリ予測] などの各分析ステップの処理結果を確認できます。分析結果が正しくない場合は、[介入の設定] をクリックして動作をカスタマイズします。
-
クエリ分析のプロセスが正しいことを確認したら、[クエリ分析ルール管理] ページで [インデックス指向] をクリックします。次に、作成したクエリ分析ルールをデフォルトのクエリ分析ルールとして指定します。
右上隅で [インデックスビュー] に切り替えます。クエリ分析リストで対象のルールを見つけ、[操作] 列の [デフォルトのクエリ分析として設定] をクリックします。この操作を元に戻すには、[デフォルトルールのキャンセル] をクリックします。
-
デフォルトのクエリ分析ルールを確認します。
デフォルトルールの名前の前には、[デフォルト]test_weight のように [デフォルト] タグが表示されます。このタグにより、設定リスト内でデフォルトルールを識別できます。
形態素の重み付け分析のための介入辞書
クエリ分析後に同じ検索クエリから抽出された形態素でも、ビジネスシナリオが異なれば重みも異なる場合があります。組み込み辞書における形態素の重みの設定が、要件を満たさないこともあります。この問題を解決するため、OpenSearch では形態素の重みをカスタマイズできます。形態素の重み付け分析のための介入辞書を作成した後、クエリ分析ルールを作成または変更する際にその介入辞書を指定できます。これにより、形態素の重み付け分析に介入することが可能になります。詳細については、「形態素の重み付け分析のための介入辞書」をご参照ください。