検索クエリ内のキーワードに基づく意図判断により、検索結果が関連要件を満たしているかどうかが決まります。OpenSearch では、クエリ分析機能を使用して検索意図を理解できます。この機能は、検索クエリに対してさまざまなインテリジェント分析を実行し、検索クエリを書き直してから、検索エンジンに送信します。次に、検索エンジンは検索クエリに基づいてデータを取得し、ソートします。このトピックでは、クエリ分析に使用できる基本機能について説明します。
ストップワードフィルタリング
検索クエリ内の無意味な単語は除外されます。無意味な単語とは、頻度は高いものの、句読点や助詞など、検索結果に影響を与えない単語のことです。
スペル修正
入力した検索クエリにスペルミスが含まれている場合、検索結果が期待に沿わない場合や、検索結果が返されない場合があります。この問題を解決するために、OpenSearch は入力した検索クエリのスペルをチェックします。クエリ分析のスペル修正機能は、検索クエリに含まれている可能性のあるスペルミスを修正し、エラーが修正された新しい検索クエリを生成します。次に、OpenSearch は、スペル修正の信頼性に基づいて、エラーが修正された新しい検索クエリを使用して検索を実行するかどうかを判断します。
用語の重み分析
用語の重み分析機能は、検索クエリ内の各用語の重要度を評価し、評価された重要度を重みとして数値化します。OpenSearch は、重要度の低い用語を使用してドキュメントを取得しない場合があります。これは、取得されるドキュメントの数を増やすのに役立ちます。入力した検索クエリに重要度の低い用語が含まれており、これらの用語がドキュメント取得プロセスに含まれている場合、検索クエリに基づいて取得されるドキュメントの数は少なくなる可能性があります。
シノニム設定
入力した検索クエリには、同じ意味を持つシノニムがある場合があります。たとえば、「Apple phone」を検索すると、iPhone に関連するコンテンツも取得され、検索結果に表示されます。OpenSearch のシノニム設定機能は、検索クエリのシノニムに基づいてドキュメントを取得します。これにより、取得されるドキュメントの数が増加します。
NER
固有表現認識 (NER) 機能は、検索クエリが分析された後、検索クエリ内の各セマンティックエンティティを認識します。各セマンティックエンティティは特定のカテゴリに追加されます。優先順位の低いセマンティックエンティティカテゴリは、検索プロセスで無視される場合があります。たとえば、検索クエリが「Nike Slim Dress」の場合、NER 後、「Nike」は中程度の優先順位のブランド名、「Slim」は低優先順位のスタイル要素、「Dress」は高優先順位のカテゴリ名として認識されます。
カテゴリ予測
カテゴリ予測機能は、検索クエリの意図とビジネスカテゴリとの関連性を予測するために使用されます。その後、ソート式を使用して、検索結果内のドキュメントのソートを調整できます。たとえば、検索クエリ「携帯電話」の検索結果には、携帯電話と携帯電話ケースが含まれます。カテゴリ予測に基づくと、検索クエリのデジタル製品カテゴリとの関連性は、デジタルアクセサリカテゴリとの関連性よりも高くなります。この場合、ソート式を使用して、デジタル製品カテゴリの結果をデジタルアクセサリカテゴリの結果よりも上位にランク付けできます。
単語埋め込み
単語埋め込み機能は、ベクトルモデルを使用して検索クエリ内のテキストをベクトルに変換し、マルチモーダル検索機能を使用してテキスト検索結果を返します。たとえば、検索クエリ「OpenSearch」は、選択したインデックスアナライザのベクトルモデルに基づいて [0.1,0.3,0.5] に変換されます。次に、ベクトルインデックスに基づいて検索結果が取得されます。マルチモーダル検索機能を設定する際に、検索ポリシーを設定できます。
インデックス範囲

次のタイプのアナライザに対してインデックス範囲を指定できます。中国語テキストの汎用アナライザ、E コマース業界の中国語テキスト用アナライザ、IT 関連テキスト用アナライザ、ゲーム業界のテキスト用アナライザ、教育業界のテキスト用アナライザ。
アプリケーションの設定時またはオフラインアプリケーションの変更時に、アプリケーションスキーマ内のインデックスの分析方法を変更できます。
検索クエリの書き換え
検索クエリの書き換え機能は、AND または OR 論理演算子を使用して、クエリ用語に基づいて検索クエリの結果を取得する方法を指定します。 注: 用語の重み分析と NER 機能は、ドキュメントの取得に使用される用語の分析結果に影響を与える可能性があります。 たとえば、検索クエリ「Nike sports shoes」は、Nike、sports、shoes という用語に分割されます。
AND 論理演算子を使用する場合、検索クエリは次の文字列に書き換えられます。
(default:'Nike' AND default:'sports' AND default:'shoes')OR 論理演算子を使用する場合、検索クエリは次の文字列に書き換えられます。
(default:'Nike' OR default:'sports' OR default:'shoes')
検索クエリの書き換え機能を有効にする クエリ分析ルールを作成または変更するときに、[検索クエリの書き換え] ドロップダウンリストから [AND] または [OR] を選択します。

検索クエリが複雑な場合、次のルールに基づいて 2 回書き換えることができます。
最初に書き換えられた検索クエリに基づいてデータを取得できる場合、検索クエリは 2 回目は書き換えられません。
最初に書き換えられた検索クエリに基づいてデータが取得されない場合、検索クエリは 2 回目に書き換えられて、より多くのデータが取得されます。
再検索ポリシー
クエリ分析を設定した後、検索クエリに基づいてデータが取得されない場合、検索クエリが書き換えられて再検索がトリガーされます。検索リクエストを開始するときに、disable パラメータを使用して再検索機能を有効にするかどうかを指定し、re_search パラメータを使用して再検索ポリシーを設定できます。詳細については、検索リクエストの開始を参照してください。
例:
disable=re_search # 再検索機能は無効になっています。
re_search=strategy:threshold,params:total_hits#6 # ヒットの総数が 6 未満の場合、再検索が実行されます。再検索機能を設定した後、検索リクエストに fetch=qp:profile を追加して、再検索後に結果が返されるかどうかを確認できます。
たとえば、qp パラメータの re_search_times パラメータの値が 0 の場合、再検索はトリガーされません。サンプルコード:
"qp": [
{
"app_name": "130180448",
"query_correction_info": [
{
"index": "index",
"original_query": "Barbie Brown Powder",
"corrected_query": "Barbie Brown Powder",
"correction_level": 1,
"processor_name": "spell_check"
}
],
"re_search_times": 0
}
],次のサンプルコードは、re_search パラメータと fetch パラメータを設定した後のリクエスト文字列の例を示しています。
query=query=index:'search test'&&config=start:0,hit:10,format:fulljson&fetch_fields=title;subtitle&fetch=qp:profile&re_search=re_search=strategy:threshold,params:total_hits#6複数のルールに基づくクエリ分析
検索リクエストでは、qp=qpName1,qpName2 の形式で qp パラメータを設定することにより、複数のクエリ分析ルールを指定できます。たとえば、index_1 と index_2 の 2 つのインデックスと、qp_1 と qp_2 の 2 つのアナライザを使用して、検索リクエストを開始します。次の制限事項に注意してください。
ケース 1: index_1 インデックスは qp_1 アナライザに関連付けられています。index_2 インデックスは qp_2 アナライザに関連付けられています。
# クエリ句
index_1:'xxx' AND index_2:'xxx' & qp=qp_1,qp_2 # クエリ句は有効です。
index_1:'xxx' & qp=qp_1,qp_2 # クエリ句は有効です。
index_2:'xxx' & qp=qp_1,qp_2 # クエリ句は有効です。ケース 2: index_1 インデックスは qp_1 アナライザに関連付けられています。index_1 インデックスは qp_2 アナライザにも関連付けられています。
# クエリ句
index_1:'xxx' & qp=qp_1,qp_2 # エラーが発生します。エラーメッセージ「6601:Rewrite index used in multi qp chains」が返されます。
index_1:'xxx' & qp=qp_1 # クエリ句は有効です。
index_2:'xxx' & qp=qp_2 # エラーが発生します。エラーメッセージ「6606:No index need to process by QP」が返されます。さまざまな業界でサポートされているクエリ分析の機能
機能 | 汎用 | E コマース | E コマース向け拡張 | IT | 教育 | 介入辞書 |
ストップワードフィルタリング | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
スペル修正 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
用語の重み分析 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
シノニム設定 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
カテゴリ予測 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
NER | × | ✓ | ✓ | × | × | ✓ |
単語埋め込み | × | × | × | × | ✓ | × |
注: チェックマーク (✓) は機能がサポートされていることを示し、クロス記号 (×) は機能がサポートされていないことを示します。 | ||||||