ユーザーの検索意図は、検索結果がニーズを満たすかどうかを直接決定します。OpenSearch では、クエリプランナーがこの意図を解釈し、エンジンで取得と並べ替えを実行する前に、一連のインテリジェントな分析を適用してクエリを書き換えます。利用可能なクエリ分析機能には、シノニム設定、ストップワードフィルタリング、スペル修正、用語の重み分析、カテゴリ予測などがあります。E コマース シナリオでは、固有表現抽出 (NER) もサポートされています。このドキュメントでは、各クエリ分析機能について説明し、E コマースのユースケースの具体例を示します。
ストップワードフィルタリングの概要
システムの組み込みストップワード辞書を使用して、クエリから意味のない用語を除外します。これらは通常、句読点や助詞など、検索結果に影響を与えない出現頻度の高い単語です。
スペル修正の概要
ユーザーのクエリは常に正確であるとは限りません。入力ミスは意図しない結果や空の結果につながる可能性があるため、入力にスペルミスがないかチェックする必要があります。OpenSearch のスペル修正機能は、クエリ内のスペルミスのある用語を特定して修正します。修正の信頼度に基づいて、システムは修正された用語を取得に使用するかどうかを決定します。
用語の重み分析の概要
この機能は、クエリ内の各用語の重要度を評価し、重みを割り当てます。重みが低い用語は、過度に厳格なマッチングを防ぐために取得から除外されることがあります。これにより、ユーザーが重みの低い用語を含めた場合に、関連する結果の数が減少するのを防ぎます。
シノニム機能の概要
実際の検索シナリオでは、ユーザーは同じ概念を異なる単語で表現することがよくあります。たとえば、Apple phone を検索した場合、iPhone を含むコンテンツも結果に表示されることが望ましいです。ユーザーが考えられるすべての同義語を1つのクエリに含めることはほとんどないため、シノニムを認識して拡張することで再現率が大幅に向上します。シノニム設定は、クエリを同等の用語で拡張し、より関連性の高いドキュメントを取得します。
固有表現抽出の概要
固有表現抽出 (NER) は、クエリ内で特定の意味を持つ意味的エンティティを識別します。認識されたエンティティとそのタイプに基づいて、クエリ分析はエンティティ固有の重みを使用してクエリを書き換え、ユーザーの意図に、より一致するようにします。この書き換えでは、取得時に重要度の高いエンティティが優先されます。重要度の低い用語は取得には影響せず、アルゴリズムによる並べ替えに影響します。
E コマースにおけるクエリ分析の例
クエリ 田中花子's Nike slim-fit dress with free shipping. を例とします。クエリ分析を設定しない場合、元のクエリは次のようになります。
query=(default:'田中花子' AND default:'same style' AND default:'Nike' AND default:'slim-fit' AND default:'dress' AND default:'free shipping' AND default:'.')
ストップワードフィルタリングを有効にした後、実際のクエリは次のようになります。
query=(default:'田中花子' AND default:'same style' AND default:'Nike' AND default:'slim-fit' AND default:'dress' AND default:'free shipping')
// 注:句読点はストップワードとして除外されました。
スペル修正を追加した後、実際のクエリは次のようになります。
query=(default:'田中花子' AND default:'same style' AND default:'Nike' AND default:'slim-fit' AND default:'dress' AND default:'free shipping')
// 注:スペル修正により、スペルミスのある検索用語が「dress」に修正されました。
用語の重み分析を追加した後、実際のクエリは次のようになります。
query1=(default:'田中花子' AND default:'same style' AND default:'Nike' AND default:'slim-fit' AND default:'dress' RANK default:'free shipping')
query2=(default:'田中花子' RANK default:'slim-fit' RANK default:'free shipping' RANK default:'same style' RANK default:'Nike' RANK default:'dress')
// 注:用語の重みを設定した後、重みの低い用語「free shipping」は取得から除外されます。query1 が結果を返さない場合、エンジンは空の結果を避けるために query2 を使用して自動的に再検索をトリガーします。
シノニム設定を追加した後、実際のクエリは次のようになります。
query1=(default:'田中花子' AND default:'same style' AND ((default:'Nike') OR (default:'nike')) AND default:'slim-fit' AND default:'dress' RANK default:'free shipping')
query2=(default:'田中花子' RANK ((default:'Nike') OR (default:'nike')) RANK default:'slim-fit' RANK default:'free shipping' RANK default:'same style' RANK default:'dress')
// 注:シノニムを設定した後、「Nike」のシノニムとして「nike」が追加されます。query1 が結果を返さない場合、エンジンは空の結果を避けるために query2 を使用して自動的に再検索をトリガーします。
固有表現抽出を追加した後、実際のクエリは次のようになります。
query1=(default:'田中花子' AND ((default:'Nike') OR (default:'nike')) AND default:'slim-fit' AND default:'dress' RANK default:'free shipping' RANK default:'same style')
query2=(((default:'Nike') OR (default:'nike')) AND default:'dress' RANK default:'slim-fit' RANK default:'free shipping' RANK default:'same style' RANK default:'田中花子')
// 注:NER は次のエンティティを識別します:田中花子 (人物)、same style (接尾辞)、Nike/nike (ブランド)、slim-fit (スタイル要素)、dress (カテゴリ)、free shipping (マーケティングサービス)。重要度の高いエンティティは取得の対象として保持されます。重要度の低い用語は取得には影響せず、並べ替えにのみ影響します。query1 が結果を返さない場合、エンジンは空の結果を避けるために query2 を使用して自動的に再検索をトリガーします。
コンソールでの設定手順
ステップ 1:OpenSearch コンソールで、[取得設定] > [クエリ分析] に移動し、[作成] をクリックします。ナビゲーションウィンドウから [取得設定] > [クエリ分析] を選択してクエリ分析の一覧ページを開きます。右上の [作成] ボタンをクリックして、新しいクエリ分析ルールを作成します。ステップ 2:ルール名、インデックス範囲、業界タイプ、および選択した機能 (複数選択可) を設定します。[ルールの追加] ダイアログボックスで、ルール名 (例:test_qp) を入力し、インデックス範囲を [default] に設定し、業界タイプとして [一般] を選択し、[スペル修正]、[用語の重み]、および [シノニム] を選択します。用語の重み設定で、[システム組み込み辞書] を選択し、[OK] をクリックします。ステップ 3:作成後、[検索効果テスト] を実行します。検証後、ルールをデフォルトに設定し、ライブクエリに適用します。検索テスト:作成後、クエリ分析リストには、タイプがカスタム、検索フィールドが default、業界タイプが一般に設定され、[スペル修正]、[用語の重み]、および [シノニム] が有効化された、test_qp という名前の新しいルールが表示されます。[操作] 列の 検索テスト リンクをクリックして、クエリ分析の効果を検証します。インデックスビューへの切り替えとデフォルト設定:クエリ分析ページで、右上の [クエリ分析ビュー] をクリックして [インデックスビュー] に切り替えます。これにより、インデックスに関連付けられているすべてのクエリ分析ルールとその機能 (ストップワードフィルタリング、スペル修正、用語の重み、シノニムなど) が表示されます。ルールリストで、ルールの横にある [デフォルトのクエリ分析として設定] をクリックして、そのインデックスのデフォルトに設定します。右上の [作成] ボタンをクリックして、新しいクエリ分析ルールを追加します。