概要
クエリステートメントにサマリー句を含めることができます。その後、以下の操作を実行できます。
フェーズ2クエリを実行して、クエリ対象のドキュメントのサマリーを取得します。OpenSearch Retrieval Engine Editionでは、ドキュメントID、ドキュメントのプライマリキーのハッシュ値、プライマリキーの値に基づいてドキュメントのサマリーを取得できます。
サマリーに表示するフィールドを指定します。
サマリーで強調表示するフィールドを指定します。
構文
{
"summary" : {
}
}フェーズ2クエリの実行
ドキュメントIDに基づいてドキュメントのサマリーを取得する
{
"config" : {
"fetch_summary_type" : "docid"
},
"summary" : {
"gids" : [
"daogou|6|0|0|0|00000000000000004cd645cfd1c63041|184140777",
"daogou|6|0|0|1|00000000000000005b3ceae33e5ab800|184140777"
]
}
}config句でfetch_summary_typeパラメータをdocidに設定し、summary句でクエリするドキュメントのgidパラメータを指定する必要があります。各ドキュメントのgidパラメータの値は、対応するフェーズ1クエリのレスポンスから取得できます。
プライマリキーのハッシュ値に基づいてドキュメントのサマリーを取得する
ドキュメントのプライマリキーのハッシュ値に基づいてドキュメントのサマリーを取得するために使用される方法は、ドキュメントのIDに基づいてドキュメントのサマリーを取得するために使用される方法に似ています。OpenSearch Retrieval Engine Editionは、クエリステートメントで指定したgidパラメータに基づいてクエリを実行します。次の項目では、2つの方法の違いについて説明します。
ドキュメントのプライマリキーのハッシュ値に基づいてドキュメントのサマリーを取得する場合は、config句でfetch_summary_typeパラメータをpkに設定します。
fetch_summary_typeパラメータの異なる値は、ドキュメントを識別するために使用できる異なる方法を指定します。ほとんどの場合、ドキュメントのプライマリキーを使用してドキュメントを識別できますが、ドキュメントのIDのみを使用してドキュメントを識別することはできません。fetch_summary_typeパラメータの値としてdocidを指定すると、OpenSearch Retrieval Engine Editionは、指定されたドキュメントIDと、フルデータおよび増分データのバージョン番号に基づいてドキュメントを識別します。fetch_summary_typeパラメータの値としてpkを指定すると、OpenSearch Retrieval Engine Editionはドキュメントを識別するためにバージョン情報を必要としません。fetch_summary_typeパラメータの値がpkの場合、OpenSearch Retrieval Engine Editionは、クエリステートメントで指定した各gidパラメータのドキュメントIDと、フルデータおよび増分データのバージョン番号を指定するコンポーネントを無視します。
ドキュメントのプライマリキーのハッシュ値に基づいてドキュメントのサマリーを取得する場合は、ドキュメントが格納されているクラスタのスキーマで、フィールドをプライマリキーとして指定し、has_primary_key_attributeパラメータをtrueに設定します。
例:
{
"config" : {
"fetch_summary_type" : "pk"
},
"summary" : {
"gids" : [
"daogou|6|100|100|100|00000000000000004cd645cfd1c63041|184140777",
"daogou|6|200|200|200|00000000000000005b3ceae33e5ab800|184140777"
]
}
}プライマリキーの値に基づいてドキュメントのサマリーを取得する
この方法を使用する場合、OpenSearch Retrieval Engine Editionはドキュメントのgidパラメータに基づいてドキュメントを識別しません。代わりに、OpenSearch Retrieval Engine Editionはドキュメントのプライマリキー値に基づいてドキュメントを識別します。この方法を使用してドキュメントのサマリーを取得するには、次の操作を実行します。
config句でfetch_summary_typeパラメータをrawpkに設定します。
ドキュメントが格納されているクラスタのスキーマで、フィールドをドキュメントのプライマリキーとして指定し、プライマリキーフィールドがhash_fieldパラメータの値に含まれていることを確認します。
例:
{
"config" : {
"fetch_summary_type" : "rawpk"
},
"summary" : {
"gids" : [
"cluster1:pk1,pk2",
"cluster2:pk3,pk4"
]
}
}
config=fetch_summary_type:rawpk&&fetch_summary=cluster1:pk1,pk2;cluster2:pk3,pk4
注意: ドキュメントのプライマリキー値には、クエリ文字列の予約文字と競合する文字が含まれている場合があります。
そのため、各予約文字の前にバックスラッシュ(\)を追加することで、クエリ文字列の予約文字をエスケープする必要があります。
サマリー句では、カンマ(,)、コロン(:)、セミコロン(;)、アンパサンド(&)、等号(=)、バックスラッシュ(\)をエスケープする必要があります。
たとえば、プライマリキー値がabc,d:e\の場合、プライマリキー値としてabc\,d\:e\\を指定します。サマリーに表示するフィールドを指定する
summary句でfetch_fieldsパラメータを指定して、サマリーに表示するフィールドを指定できます。
例:
{
"summary" : {
"fetch_fields" : ["title", "body", "price"]
}
}サマリーで強調表示するフィールドを指定する
summary句を使用して、サマリーで強調表示するフィールドを指定できます。次のパラメータを指定できます。
highlighter:使用するハイライターの名前。
pre_tag:強調表示するフィールドの接頭辞タグ。
post_tag:強調表示するフィールドの接尾辞タグ。
fields:強調表示するフィールド。
fragment_size:各フラグメントの長さ。
number_of_fragments:フラグメントの数。
例:
{
"summary" : {
"highlight" : {
"highlighter" : "plain",
"pre_tag" : "<em>",
"post_tag" : "</em>",
"fields" : {
"title" : {
"fragment_size" : 100,
"number_of_fragments" : 3
}
}
}
}
}使用上の注意
summary句は省略可能です。
クラスタの不安定性またはデータの更新により、サマリーを取得できない場合があります。クエリが実行されるクラスタが不安定な場合、サマリーを取得するために行う操作がタイムアウトする可能性があります。システムがデータを更新するとき、システムは古いデータを削除してからリアルタイムデータをロードすることによってデータを更新するため、サマリーを取得するドキュメントのデータは短時間削除状態になる可能性があります。
ドキュメントIDは固定値ではなく、システムが増分データをロードしたり、リアルタイムデータを更新したりした後に変更される可能性があるため、ドキュメントIDベースの方法を使用してサマリーを取得することはお勧めしません。