ドキュメントは長文であることが多く、検索結果にその全文を表示することは実用的ではありません。この問題に対処するため、サマリーとハイライトを設定できます。システムは検索語を含むテキストセグメントを抽出し、ユーザーが検索結果の関連性を迅速に判断できるようにします。これらの表示設定はコンソールでカスタマイズできます。設定が完了すると、これらの設定は API 検索リクエストに自動的に適用されます。API 呼び出しで summary パラメーター を使用することで、特定のクエリに対してコンソールの設定をオーバーライドすることもできます。
パラメーター
-
フィールド: サマリーを生成するフィールド。
-
セグメントの長さ: 各サマリーセグメントの最大長。
-
ハイライトタグ: キーワードをハイライトするために使用される HTML タグ。
-
セグメントコネクタ: サマリーセグメントを接続するために使用される文字列。
-
セグメント数: 返されるセグメントの最大数。
コンソールでの設定
1. コンソールで、 [機能拡張] > [検索結果の表示] に移動し、サマリーを設定します。

2. 次の例では、ハイライトタグの設定方法を示します。
この例では、 title フィールドにサマリーが設定されています。セグメントの長さは 50、ハイライトタグは em、セグメントコネクタは ...、セグメント数は 5 です。
API と SDK の設定
-
API パラメーター:
summaryパラメーター を使用して設定を指定します。 -
SDK 設定: 次の例では、Java SDK を使用してサマリーを設定する方法を示します。
// 検索結果のサマリーを設定します。Summary オブジェクトを使用すると、サマリー設定を簡単に追加できます。 Summary summ = new Summary("name"); summ.setSummary_field("name");// サマリーを適用するフィールド。これは、アナライザーを持つ TEXT 型のフィールドである必要があります。 summ.setSummary_len("50");// セグメントの長さ。 summ.setSummary_element("em"); // ハイライトタグ。 summ.setSummary_ellipsis("...");// セグメントコネクタ。 summ.setSummary_snippet("1");// セグメント数。 // Summary オブジェクトを追加します。注意:
-
SearchParamsクラスのsummaryオブジェクトでは、ハイライトタグに個別のプレフィックスとサフィックスを指定することはできません。完全な HTML タグを指定する必要があります。例えば、ハイライトタグをemに設定した場合、「Alibaba Cloud OpenSearch product document」に対する JSON レスポンスのハイライト結果はAlibaba Cloud<em>OpenSearch</em>product documentとなります。 -
SDK でハイライトタグにカスタムのプレフィックスとサフィックスを設定するには、
SearchParamsBuilderオブジェクトを使用します。// SearchParams のユーティリティクラスで、より柔軟な操作を提供します。 SearchParamsBuilder paramsBuilder = SearchParamsBuilder.create(searchParams); // SearchParamsBuilder オブジェクトを使用してサマリー設定を追加します。 paramsBuilder.addCustomParam("summary", "summary_field:name,summary_ellipsis:...,summary_snippet:1,summary_len:50,summary_element_prefix:<abc>,summary_element_postfix:</abc>"); // 複数のサマリーフィールドを指定するには、セミコロン (;) で区切ります。重要事項
-
ハイライトはクエリ内の検索語にのみ適用されます。ハイライト用に設定されたフィールドはインデックス化されている必要があります。そうでない場合、ハイライトが期待どおりに機能しない可能性があります。
-
サマリーとハイライトの設定は、一緒に設定する必要があります。
-
複数のフィールドにサマリーを設定すると、一致した検索語は指定されたすべてのフィールドでハイライトされます。
-
一致する検索語がドキュメントの奥深く、10,000 バイトの制限を超えた場所に現れる場合、その検索語はハイライトされません。
-
ハイライト中に、ソーステキスト内のリテラルな山括弧 (
<および>) は、出力では<および>にエスケープされます。 -
同じフィールドに標準中国語アナライザーや単一文字アナライザーなど、異なるアナライザーを適用すると、ハイライトが不正確になったり、不完全になったりする可能性があります。サマリーは、一方のアナライザーに基づいてのみ検索語と一致したり、誤った内容をハイライトしたりする可能性があります。
-
1 つのクエリで、検索に異なるアナライザーを持つ 2 つ以上のインデックスを使用すると、ハイライトが失敗したり、予期せぬ動作をしたりする可能性があります。
-
デフォルトでは、特殊文字はハイライトされたセグメントから除外されます。これらの文字を表示するには、kvpairs 句を
filter_punc:0に設定して、このフィルタリングを無効にします。
サマリーとハイライトの例
キーワード friendship を検索すると、検索結果リストには各エントリのサマリーセグメントが表示され、一致したキーワードがハイライトされます。各結果には、タイトル、出典、著者、カテゴリ、ステータス、文字数、評価などのフィールドに加え、 [読書を開始] ボタンが含まれます。ページ上部では、カテゴリ、文字数、ステータスで結果を絞り込んだり、更新日時、評価数、購読数などの基準で並べ替えたりすることもできます。