ドキュメントは長文であることが多く、検索結果に全文を表示することはできません。この問題に対処するため、検索結果のサマリーとハイライトを設定できます。システムはクエリタームを含むセグメントを抽出し、ユーザーが結果の関連性を迅速に判断できるようにします。コンソールで検索結果の表示方法をカスタマイズできます。コンソールで一度設定すると、これらの設定は API 検索クエリに自動的に適用され、リクエストごとに指定する必要はありません。また、API リクエストで summary パラメーターを使用することで、特定のクエリに対してこれらの設定をオーバーライドすることもできます。詳細については、「検索リクエストの開始」をご参照ください。
パラメーター
-
フィールド:検索結果のサマリーを生成する対象のフィールド。
-
セグメントの長さ:検索結果のサマリー全体の最大長。
-
ハイライトタグ:クエリタームをハイライトするために使用される HTML タグ。
-
セグメントコネクタ:セグメントを結合するために使用される文字または文字列。
-
セグメント数:指定されたサマリー長内で表示するセグメントの数。
コンソールでの設定
1. コンソールで、[OpenSearch High-performance Search Edition] > [Feature Extensions] > [Search Result Display] に移動し、[Search Result Summary] セクションで設定を行います。
2. 次の例は、ハイライトの設定を示しています。ハイライトタグは em に設定されています。
コンソールの [Search Result Summary] セクションで、title フィールドのセグメントの長さを 50、ハイライトタグを em、セグメントコネクタを ...、セグメント数を 5 に設定します。
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"); // ハイライトタグ。 summ.setSummary_ellipsis("...");// セグメントコネクタ。 summ.setSummary_snippet("1");// セグメント数。注:
-
SearchParamsクラスのsummaryオブジェクトを使用する場合、ハイライトタグにカスタムのプレフィックスやポストフィックスを指定することはできません。完全な HTML タグ名を使用する必要があります。プレフィックスとポストフィックスのデフォルト値は、それぞれ < と > です。たとえば、ハイライトタグをemに設定した場合、返される JSON 形式の結果はAlibaba CloudOpenSearchproduct documentのようになります。 -
SDK でハイライトタグにカスタムのプレフィックスとポストフィックスを設定するには、
searchParamsBuilderオブジェクトを使用します。// SearchParams の操作を簡素化するユーティリティクラス。 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 値を指定するには、セミコロン (;) で区切ります。注意事項
-
ハイライトはクエリ内のタームにのみ適用されます。ハイライト対象のフィールドはインデックス化されている必要があります。そうでない場合、ハイライトが正しく機能しないことがあります。
-
サマリーとハイライトを個別に設定することはできません。
-
複数のフィールドに対してサマリーを設定した場合、一致したクエリタームは指定されたすべてのフィールドでハイライトされます。
-
一致するタームがコンテンツの深い部分 (10,000 バイトの制限を超える場所) に出現した場合、ハイライトされません。
-
同じフィールドに対して、標準中国語アナライザや単一文字アナライザなど、異なるタイプのアナライザを作成した場合、ハイライトが正しく機能しないことがあります。たとえば、一方のアナライザに基づいてのみコンテンツがハイライトされたり、誤ったコンテンツがハイライトされたりする可能性があります。
-
クエリが複数のアナライザを使用している場合、ハイライトが正しく機能しないことがあります。
-
デフォルトでは、ハイライトされたセグメント内の特殊文字は、返されるドキュメントからフィルター処理されます。これらの文字を表示するには、クエリにカスタム句
kvpairs=filter_punc:0を追加して、このフィルター処理を無効にします。