16.7 JSONの結果セット・インタフェースの使用

CTX_QUERY.RESULT_SET()およびCTX_QUERY.RESULT_SET_CLOB_QUERY() APIを使用すると、CONTAINS()問合せを何度も実行して同じ結果を得るのではなく、単一の問合せで問合せ結果を取得できます。2つのAPIは、一方がVARCHAR2問合せパラメータを使用し、もう一方がCLOB問合せを使用してより長い問合せに対応できる点を除き同じです。

使用方法

入力の結果セット記述子(RSD)の問合せは、次の部分で構成されています。
  • $query - $queryを使用して、検索問合せ、パス制約、およびパス・ベースのその他のフィルタ条件を指定します。$query部分は、JSON検索索引が列に存在する場合にのみサポートされます。

  • $search - $searchを使用して、スコアでランク付けされた検索結果とその件数を表示します。JSON以外のOracle Text全文索引の場合は、検索結果を予測するSDATAセクションも指定できます。

  • $facet - $facetを使用して、JSONドキュメントの様々なパス、またはコンテキスト索引付きドキュメントのSDATAセクションについてファセットを指定します。一意の1つの値でバケット化された複数ファセット、およびユーザーが指定した範囲バケットごとの複数ファセットがサポートされています。ファセットは、COUNTMINなどの集計のいずれかにすることもできます。

結果セットの出力は次の形式になります。

{
  "$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リファレンス