カテゴリ:

文字列とバイナリ関数 (AI 関数)

SEARCH_PREVIEW (SNOWFLAKE.CORTEX)

Cortex Searchのサービス名とクエリが指定されると、指定されたサービスからの応答を返します。

構文

SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
    '<service_name>',
    '<query_parameters_object>'
)
Copy

引数

service_name

Cortex Searchサービスの名前。サービスが現在のセッションと異なるスキーマにある場合、完全修飾名を使用します。

query_parameters_object

サービスを呼び出すためのクエリパラメーターを指定する JSON オブジェクトを含む STRING

キー

説明

デフォルト

query

String

検索クエリ、サービス内のテキスト列を検索します。

これは必須です。

columns

配列

カンマ区切りのリストで、応答内の関連する結果ごとに返す列を指定します。これらの列は、サービスのソースクエリに含まれている必要があります。

サービス作成時に指定した検索列。

filter

オブジェクト

ATTRIBUTES 列のデータに基づいて結果をフィルタリングするためのフィルターオブジェクト。詳細な構文については、 フィルター構文 をご参照ください。

空のオブジェクト

limit

Integer

応答で返す結果の最大数。

10

フィルター構文

Cortex Searchは、 CREATE CORTEX SEARCH SERVICE コマンドで指定された ATTRIBUTES 列でのフィルタリングをサポートします。

Cortex Searchは4つのマッチング演算子をサポートしています。

これらのマッチング演算子は、さまざまな論理演算子と組み合わせることができます。

  • @and

  • @or

  • @not

以下の使用上の注意があります。

  • ソース・クエリ内の NaN ('not a number') 値に対するマッチングは、 特別な価値 の説明に従って処理されます。

  • Fixed-point numeric values with more than 19 digits (not including leading zeroes) do not work with @eq, @gte, or @lte and will not be returned by these operators.

    • たとえば、ソースクエリに大きな値がある場合、 @eq を使用してその値を正確に一致させると、結果は返されません。

    • これらの大きな値は、 @not を使用した全体的なフィルターによって依然として返される可能性があります(たとえば、 @eq X は、大きなXに対して値を返しませんが、 @not @eq Y はそれを返します)

  • TIMESTAMP および DATE フィルターは、 YYYY-MM-DD およびタイムゾーンを意識した日付の場合は YYYY-MM-DD+HH:MM という形式の値を受け付けます。タイムゾーンオフセットを指定しない場合、日付は UTC で解釈されます。

  • @primarykey主キー で構成されたサービスでのみサポートされます。フィルターの値は である必要があります JSON すべての主キー列を対応する値にマッピングオブジェクト(または NULL)。

これらの演算子は1つのフィルターオブジェクトにまとめることができます。

  • 文字列のような列 string_col が値 value と等しい行に対するフィルタリング。

    { "@eq": { "string_col": "value" } }
    
    Copy
  • 指定された主キーを持つ行へのフィルタリング

    { "@primarykey": { "region": "us-west-1", "agent_id": "abc123" } }
    
    Copy
  • ARRAY 列 array_col に値 value が含まれる行のフィルタリング。

    { "@contains": { "array_col": "arr_value" } }
    
    Copy
  • NUMERIC 列 numeric_col が 10.5 から 12.5 (含む) の間の行のフィルター:

    { "@and": [
      { "@gte": { "numeric_col": 10.5 } },
      { "@lte": { "numeric_col": 12.5 } }
    ]}
    
    Copy
  • TIMESTAMP 列 timestamp_col2024-11-192024-12-19 の間にある行のフィルタリング。

    { "@and": [
      { "@gte": { "timestamp_col": "2024-11-19" } },
      { "@lte": { "timestamp_col": "2024-12-19" } }
    ]}
    
    Copy
  • 論理演算子でフィルターを構成する

    // Rows where the "array_col" column contains "arr_value" and the "string_col" column equals "value":
    {
        "@and": [
          { "@contains": { "array_col": "arr_value" } },
          { "@eq": { "string_col": "value" } }
        ]
    }
    
    // Rows where the "string_col" column does not equal "value"
    {
      "@not": { "@eq": { "string_col": "value" } }
    }
    
    // Rows where the "array_col" column contains at least one of "val1", "val2", or "val3"
    {
      "@or": [
          { "@contains": { "array_col": "val1" } },
          { "@contains": { "array_col": "val1" } },
          { "@contains": { "array_col": "val1" } }
      ]
    }
    
    Copy

戻り値

Cortex Searchサービスからのクエリ結果と、一意のリクエスト ID を含む OBJECT を返します。`例`_ の出力例をご参照ください。

使用上の注意

  • This function is designed for testing and validation, and incurs more latency than using the REST or Python APIs. Use other methods to serve search queries in an end-user application that requires low latency.

  • This function only operates on constant arguments. It does not accept table columns as input.

  • この関数は、検索結果が300kBを超える場合、検索結果を切り捨てます。REST サーフェスは最大 10MB の応答を許可します。

この例は、 test query を使用して sample_service という名前のサービスをクエリします。この例は、(最大でも)5つの結果を返し、 col1col2 列のデータを含んでいます。

SELECT
  SNOWFLAKE.CORTEX.SEARCH_PREVIEW (
      'mydb.mysch.sample_service',
      '{
          "query": "test query",
          "columns": ["col1", "col2"],
          "limit": 3
      }'
  );
Copy
{
  "results":[
      {"col1":"text", "col2":"text"},
      {"col1":"text", "col2":"text"},
      {"col1":"text", "col2":"text"}
  ],
  "request_id":"a27d1d85-e02c-4730-b320-74bf94f72d0d"
}