SEARCHPIPELINE

行レコードのパイプラインを返すには、標準の表関数DBMS_HYBRID_VECTOR.SEARCHPIPELINEを使用します。

このパイプライン関数は、有効なJSON問合せ入力を受け入れ、行レコードのパイプラインを返します。構文は次のとおりです:

FUNCTION SEARCHPIPELINE(qparams JSON)
RETURN results PIPELINED;
resultsのタイプはRECORDです。resultsには、次のフィールドが含まれています:

レコード・メンバーは、SELECT文の列名です。これらの名前は、DBMS_HYBRID_VECTOR_SEARCH()で返されるJSONフィールド名と同じです。ただし、pathsはレコード内のフィールドIDのリストであり、JSONの結果では(配列内で)そのIDが実際のパスにマップされます。また、結果レコードには、rowidという名前のメンバーやrowid型のメンバーを含めることができませんでした。

例12-1

SELECT
   chartorowid(doc_rowid) as doc_rowid,
   score,
   vector_score,
   text_score,
   vector_rank,
   text_rank,
   chunk_text,
   chunk_id,
   paths
FROM dbms_hybrid_vector.searchpipeline(JSON('{"hybrid_index_name" : "idx",
                                              "search_text" : "teamwork" }'));

表関数DBMS_HYBRID_VECTOR.SEARCHPIPELINE()を使用しない場合は、元のSEARCH APIをJSON_TABLE仕様でラップできます。これを次の例に示します:

SELECT jt.*
FROM
   JSON_TABLE(
        dbms_hybrid_vector.search(
                      json_object('hybrid_index_name' value 'idx',
                      'search_text' value 'teamwork'
                      RETURNING JSON)
                   ),
                   '$[*]' COLUMNS idx for ORDINALITY,
                                  doc_rowid PATH '$.rowid',
                                  score NUMBER PATH '$.score',
                                  vector_score NUMBER PATH '$.vector_score',
                                  text_score NUMBER PATH '$.text_score',
                                  vector_rank NUMBER PATH '$.vector_rank',
                                  text_rank NUMBER PATH '$.text_rank',
                                  chunk_text PATH '$.chunk_text',
                                  chunk_id PATH '$.chunk_id',
                                  paths PATH '$.paths'
                    ) jt
ORDER by idx ASC