ほとんどの場合、ドキュメントのコンテンツはサイズが大きくなります。ドキュメントを検索する場合、ドキュメントのコンテンツ全体が表示されないことがあります。このような場合、OpenSearchは検索結果の概要機能を提供し、検索結果に表示および強調表示するコンテンツを指定できます。ユーザーがドキュメントの主要な内容を理解し、ドキュメントが期待どおりであるかどうかを判断できるように、システムは検索結果にクエリ用語を含むドキュメントのコンテンツのいくつかのセグメントを表示します。OpenSearchコンソールで検索結果の表示効果を設定できます。表示効果を設定すると、API操作を呼び出すときに、表示効果に設定した構成が自動的に取得され、検索クエリに追加されます。この方法では、概要パラメータを再度渡す必要はありません。API操作で概要パラメータを設定して、検索結果の概要を指定することもできます。詳細については、検索リクエストの開始を参照してください。
パラメータ
フィールド: 概要を設定するフィールド。
セグメントの長さ: セグメントの最大長。
強調表示用のHTMLタグ: クエリ用語を赤で強調表示するために使用されるHTMLタグ。
セグメントコネクタ: セグメントを接続するために使用されるコネクタ。
セグメント数: 指定された長さ内の検索結果の概要に必要なセグメントの数。
OpenSearchコンソールでのHTMLタグの設定と使用
1. OpenSearchコンソールにログインします。左側のナビゲーションペインで、機能拡張 > 検索結果の表示を選択します。検索結果の表示ページで、検索結果の概要を設定します。
2. 次の図は、フィールドに設定されたHTMLタグを示しています。タイトルフィールドの強調表示用のHTMLタグはemに設定されています。
SDKの使用またはAPI操作の呼び出しによるHTMLタグの設定
APIパラメータ: summaryパラメータを指定することで、APIパラメータを設定できます。
SDK: 次のサンプルコードは、Java用SDKを呼び出してHTMLタグを設定する方法を示しています。
// 検索結果の概要を設定します。SearchParamsオブジェクトを使用して、検索結果の概要を追加します。 Summary summ = new Summary("name"); summ.setSummary_field("name");// 概要を設定するフィールドを指定します。分析可能なTEXTタイプのフィールドを指定する必要があります。 summ.setSummary_len("50");// セグメントの長さを指定します。 summ.setSummary_element("em"); // 検索クエリを赤で強調表示するために使用されるHTMLタグの名前を指定します。 summ.setSummary_ellipsis("...");// セグメントを接続するために使用されるコネクタを指定します。 summ.setSummary_snippet("1");// セグメントの数を指定します。 // 概要パラメータを追加します。
注:
SDKのSearchParamsオブジェクトのsummaryパラメータを使用して、クエリ用語を赤で強調表示するために使用されるHTMLタグのプレフィックスとサフィックスを設定することはできません。プレフィックスとサフィックスで構成される完全なHTMLタグを指定する必要があります。デフォルトでは、プレフィックスとサフィックスは<>です。たとえば、フィールドのHTMLタグをemに設定します。フィールドのクエリ結果は、強調表示されたコンテンツが赤で表示されたJSON形式で返されます: Alibaba Cloud<em>OpenSearch</em>製品ドキュメント。
SDKを使用して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タグを指定する必要があります。
複数のフィールドの検索結果の概要を設定し、フィールドの値にインデックスで指定されたクエリ用語が含まれている場合、フィールドのクエリ用語は検索結果に表示され、赤で強調表示されます。
ヒットクエリ用語がドキュメントの後半に表示され、クエリ用語の前のコンテンツの長さが最大制限の10,000バイトを超えている場合、クエリ用語は赤で強調表示されません。
クエリ用語を赤で強調表示するために使用されるHTMLタグを指定すると、左山括弧(<)は<にエスケープされ、右山括弧(>)は>にエスケープされます。
アプリケーションでフィールドに異なる分析ルールが設定されている場合、フィールドのコンテンツが検索結果で正しく赤で強調表示されない場合があります。たとえば、フィールドに中国語の一般アナライザーと中国語の単一文字アナライザーの両方を設定した場合、中国語の単一文字アナライザーに基づいて分析されたコンテンツのみが検索結果で強調表示されるか、不要なコンテンツが検索結果で赤で強調表示されます。
同じ検索クエリで、2つ以上の異なる分析インデックスが設定されている場合、指定されたコンテンツが赤で強調表示されないか、不要なコンテンツが赤で強調表示される場合があります。
赤で強調表示されるセグメントに特殊文字が含まれている場合、特殊文字は検索結果で除外されます。特殊文字を検索結果に表示する場合は、kvpairs=filter_punc:0を指定してフィルタリングをスキップできます。