16.7 JSONの結果セット・インタフェースの使用
CTX_QUERY.RESULT_SET()
およびCTX_QUERY.RESULT_SET_CLOB_QUERY()
APIを使用すると、CONTAINS()
問合せを何度も実行して同じ結果を得るのではなく、単一の問合せで問合せ結果を取得できます。2つのAPIは、一方がVARCHAR2
問合せパラメータを使用し、もう一方がCLOB
問合せを使用してより長い問合せに対応できる点を除き同じです。
使用方法
-
$query -
$query
を使用して、検索問合せ、パス制約、およびパス・ベースのその他のフィルタ条件を指定します。$query
部分は、JSON検索索引が列に存在する場合にのみサポートされます。 -
$search -
$search
を使用して、スコアでランク付けされた検索結果とその件数を表示します。JSON以外のOracle Text全文索引の場合は、検索結果を予測するSDATA
セクションも指定できます。 -
$facet -
$facet
を使用して、JSONドキュメントの様々なパス、またはコンテキスト索引付きドキュメントのSDATA
セクションについてファセットを指定します。一意の1つの値でバケット化された複数ファセット、およびユーザーが指定した範囲バケットごとの複数ファセットがサポートされています。ファセットは、COUNT
、MIN
などの集計のいずれかにすることもできます。
結果セットの出力は次の形式になります。
{
"$count" : number ,
"$hit" :
[
{
"score" : <search_score>,
"rowid" : <rowid>,
"project" : {"<sdata_name>" : <sdata_value>, … }
},
…
],
"$facets" :
[
{"<field>" : [ ..., { "value" : <value_i>, "$uniqueCount" : <group_count_i>}, ... ]},
{"<field>" : [ ..., { "bucket" : <bucket_object_i>, "<op>" : <group_count_i>}, ... ]},
{"<field>" : { "<op>" : <actual_value of the aggregation> } },
…
]
}
関連項目:
CTX_QUERY.RESULT_SET
プロシージャの詳細は、Oracle Textリファレンス