検索クエリ内のキーワードに基づく意図の判断によって、検索結果が関連要件を満たすかどうかが決まります。OpenSearch のクエリ分析機能を使用すると、検索意図を理解できます。この機能は、検索クエリに対してさまざまなインテリジェント分析を実行して検索クエリを書き換え、検索エンジンに送信します。その後、検索エンジンが検索クエリに基づいてデータを取得し、ソートします。このトピックでは、クエリ分析に使用できる基本的な機能について説明します。
ストップワードフィルタリング
検索クエリ内の無意味な単語をフィルタリングによって除外します。無意味な単語とは、句読点や助詞など、出現頻度が高いものの検索結果に影響を与えない単語のことです。
スペル修正
入力した検索クエリにスペルミスが含まれている場合、期待どおりの結果が得られなかったり、検索結果が返されなかったりすることがあります。この問題を解決するため、OpenSearch は入力された検索クエリのスペルをチェックします。クエリ分析のスペル修正機能は、検索クエリに含まれる可能性のあるスペルミスを修正し、修正後の新しい検索クエリを生成します。その後、OpenSearch はスペル修正の信頼度に基づいて、修正後の新しい検索クエリを使用して検索を実行するかどうかを決定します。
ターム重み分析
ターム重み分析機能は、検索クエリ内の各タームの重要度を評価し、評価した重要度を重みとして定量化します。OpenSearch は、重要度の低いタームをドキュメントの取得に使用しない場合があります。これにより、取得されるドキュメントの数が増加します。入力した検索クエリに重要度の低いタームが含まれており、これらのタームがドキュメント取得プロセスに関与する場合、検索クエリに基づいて取得されるドキュメントの数が少なくなる可能性があります。
同義語設定
入力した検索クエリには、同じ意味を持つ同義語が存在する場合があります。たとえば、「Apple phone」を検索すると、iPhone に関連するコンテンツも取得され、検索結果に表示されます。OpenSearch の同義語設定機能は、検索クエリ内の語句の同義語に基づいてドキュメントを取得します。これにより、取得されるドキュメントの数が増加します。
固有表現抽出 (NER)
固有表現抽出 (NER) 機能は、検索クエリが分析された後、クエリ内の各セマンティックエンティティを認識します。各セマンティックエンティティは特定のカテゴリに割り当てられます。優先度の低いセマンティックエンティティカテゴリは、検索プロセスで無視される場合があります。たとえば、検索クエリが「Nike Slim Dress」の場合、NER 後、「Nike」は中優先度のブランド名、「Slim」は低優先度のスタイル要素、「Dress」は高優先度のカテゴリ名として認識されます。
カテゴリ予測
カテゴリ予測機能は、検索クエリの意図とビジネスカテゴリとの関連性を予測するために使用されます。その後、ソート式を使用して、検索結果内のドキュメントのソート順を調整できます。たとえば、検索クエリ「mobile phone」の検索結果には、携帯電話と携帯電話ケースが含まれます。カテゴリ予測に基づき、検索クエリは、デジタルアクセサリカテゴリよりもデジタル製品カテゴリへの関連性が高いと判断されます。この場合、ソート式を使用して、デジタル製品カテゴリの結果をデジタルアクセサリカテゴリの結果よりも上位にランク付けできます。
単語埋め込み
単語埋め込み機能は、ベクトルモデルを使用して検索クエリ内のテキストをベクトルに変換し、マルチモーダル検索機能を使用してテキスト検索結果を返します。たとえば、検索クエリ「OpenSearch」は、選択されたインデックスアナライザーのベクトルモデルに基づいて [0.1,0.3,0.5] に変換されます。その後、ベクトルインデックスに基づいて検索結果が取得されます。マルチモーダル検索機能の設定時に、検索ポリシーを設定できます。
インデックス範囲
[リコール設定] ページで、[クエリ分析設定] タブをクリックし、[ルールの追加] をクリックします。表示されたダイアログボックスで、次のパラメーターを設定します。
[ルール名]:カスタムルール名 (例:
default) を入力します。[インデックス範囲]:インデックス範囲を選択します。
[業界タイプ]:業界タイプ (例:[汎用]) を選択します。
[クエリ書き換えポリシー]:[AND] または [OR] を選択します。
[機能選択]:[スペル修正]、[ターム重み]、[同義語] (介入辞書を設定できます)、または [カテゴリ予測] (カテゴリ予測モデルを選択できます) を選択します。
[辞書の使用法]:[システム組み込み辞書] を選択します。
設定が完了したら、[OK] をクリックします。
次のタイプのアナライザーにインデックス範囲を指定できます:汎用中国語テキストアナライザー、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=strategy:threshold,params:total_hits#6複数のルールに基づくクエリ分析
検索リクエストでは、qp パラメーターを qp=qpName1,qpName2 の形式で設定することで、複数のクエリ分析ルールを指定できます。たとえば、2 つのインデックス index_1 と index_2、および 2 つのアナライザー qp_1 と qp_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 | × | √ | √ | × | × | √ |
単語埋め込み | × | × | × | × | √ | × |
注:チェックマーク (√) は機能がサポートされていることを示し、バツ記号 (×) は機能がサポートされていないことを示します。 | ||||||