一般的に、ドキュメント内のコンテンツの長さは大きくなります。ただし、ドキュメントの全文が検索結果に表示されない場合があります。このような場合、OpenSearchは、検索結果に表示されるコンテンツと強調表示されるコンテンツを指定するための検索結果の概要機能を提供します。ユーザーがドキュメントの主要な内容を理解し、ドキュメントが期待どおりであるかどうかを判断できるように、システムは検索結果に検索クエリを含むドキュメントのコンテンツのいくつかのセグメントを表示します。OpenSearchコンソールで検索結果の表示効果を設定できます。表示効果を設定すると、API操作を呼び出すときに、システムは自動的に表示効果の設定を取得し、クエリ句に追加します。このようにして、概要パラメータを再度渡す必要はありません。API操作でsummaryパラメータを使用して、検索結果の概要を設定することもできます。詳細については、検索リクエストの開始を参照してください。
パラメータ
フィールド: 検索結果の概要を設定するフィールド。
セグメントの長さ: 検索結果の概要の最大長。
ハイライト用のHTMLタグ: 検索クエリを赤で強調表示するために使用されるHTMLタグの名前。
セグメントコネクタ: セグメントを接続するために使用されるコネクタ。
セグメント数: ドキュメントに必要なセグメントの数。
OpenSearchコンソールで検索結果の概要を設定する
1. OpenSearchコンソールにログインします。左側のナビゲーションペインで、OpenSearch業界アルゴリズムエディションをクリックし、OpenSearch高性能検索エディションを選択し、機能拡張>検索結果の表示を選択します。検索結果の表示ページで、ドロップダウンリストから検索結果の概要を設定するアプリケーションを選択し、検索結果の概要セクションで検索結果の概要を設定します。
2. 次の図は、titleフィールドのハイライト用のHTMLタグがemに設定されている検索結果の概要設定の例を示しています。
APIまたはSDKを使用して検索結果の概要を設定する
API: summaryパラメータを使用して、検索結果の概要を設定します。詳細については、検索リクエストの開始を参照してください。
SDK: 次のサンプルコードは、Java用SDKを使用して検索結果の概要を設定する方法を示しています。
// 検索結果の概要を設定します。SearchParamsクラスは、検索結果の概要を追加するために使用されます。 Summary summ = new Summary("name"); summ.setSummary_field("name");// 検索結果の概要を設定するフィールドを指定します。フィールドはテキスト型である必要があり、フィールドを分析できるようにする必要があります。 summ.setSummary_len("50");// 検索結果の概要の最大長を指定します。 summ.setSummary_element("em"); // 検索クエリを赤で強調表示するために使用されるHTMLタグの名前を指定します。 summ.setSummary_ellipsis("...");// セグメントを接続するために使用されるコネクタを指定します。 summ.setSummary_snippet("1");// セグメントの数を指定します。 // summaryパラメータを追加します。
注:
SDKのSearchParamsクラスのsummaryパラメータを使用して、検索クエリを赤で強調表示するために使用されるHTMLタグの名前のみを指定できます。デフォルトでは、システムはタグ名を山括弧(< >)で囲み、強調表示する検索クエリの開始と終了にタグを配置します。たとえば、フィールドのHTMLタグ名をemに設定した場合、赤で強調表示された検索クエリを持つフィールドの検索結果はJSON形式で返されます: Alibaba Cloud<em>OpenSearch</em>製品ドキュメント。
開始HTMLタグと終了HTMLタグを指定するには、SearchParamsBuilderオブジェクトを使用します。
// SearchParamsBuilderオブジェクトを作成します。SearchParamsクラスのユーティリティクラスとして、SearchParamsBuilderを使用すると、パラメータを簡単に設定できます。 SearchParamsBuilder paramsBuilder = SearchParamsBuilder.create(searchParams); // SearchParamsBuilderオブジェクトを使用して、検索結果の概要を追加します。 paramsBuilder.addCustomParam("summary", "summary_field:name,summary_ellipsis:...,summary_snipped:1,summary_len:50,summary_element_prefix:<abc>,summary_element_postfix:</abc>"); // summary_fieldパラメータの複数の値をセミコロン(;)で区切ります。
使用上の注意
検索クエリのみを赤で強調表示できます。フィールドにHTMLタグを指定する場合は、フィールドにインデックスを作成する必要があります。そうしないと、検索結果で検索クエリが正しく赤で強調表示されない場合があります。
フィールドにHTMLタグを個別に指定することはできません。フィールドの検索結果の概要を設定するときに、フィールドにHTMLタグを指定できます。
複数のフィールドの検索結果の概要を設定し、フィールドの値に検索クエリの用語が含まれている場合、フィールド内の用語は検索結果に表示され、赤で強調表示されます。
検索結果の概要の最大長は10,000バイトです。10,000バイトを超えて出現するヒット用語は赤で強調表示されません。
アプリケーションのフィールドに異なる分析ルールが設定されている場合、フィールドのコンテンツは検索結果で正しく赤で強調表示されない場合があります。たとえば、フィールドに中国語の一般アナライザーと中国語の単一文字アナライザーの両方を設定した場合、中国語の単一文字アナライザーに基づいて分析されたコンテンツのみが検索結果で強調表示されるか、不適切なコンテンツが検索結果で赤で強調表示されます。
検索リクエストの同じクエリ句に2つ以上の異なる分析インデックスが設定されている場合、指定されたコンテンツが赤で強調表示されないか、不適切なコンテンツが赤で強調表示されます。
赤で強調表示される検索クエリを含むセグメントに特殊文字が含まれている場合、特殊文字は検索結果で除外されます。特殊文字を検索結果に表示する場合は、カスタム句kvpairs=filter_punc:0を設定してフィルタリングをスキップできます。