类别:

:doc:`/sql-reference/functions-string`(大型语言模型)

SEARCH_PREVIEW (SNOWFLAKE.CORTEX)

给定 Cortex Search 服务名称和查询,从指定的服务返回响应。

语法

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

实参

service_name

Cortex Search 服务的名称。如果服务位于与当前会话不同的架构中,则使用完全限定名称。

query_parameters_object

STRING 包含 JSON 对象,该对象指定用于调用服务的查询参数。

类型

描述

默认值

query

字符串

您的搜索查询,用于搜索服务中的文本列。

这是必需的。

columns

数组

列的以逗号分隔列表,用于返回响应中每个相关结果的列。这些列必须包含在服务的源查询中。

创建服务时指定的搜索列。

filter

对象

筛选对象,用于根据 ATTRIBUTES 列中的数据筛选结果。有关详细语法,请参阅 筛选器语法

空对象

limit

整数

要在响应中返回的最大结果数。

10

筛选器语法

Cortex Search 支持对 CREATE CORTEX SEARCH SERVICE 命令中指定的 ATTRIBUTES 列进行筛选。

Cortex Search 支持四种匹配运算符:

  • 字符串相等:@eq

  • 数组包含:@contains

  • 日期/时间戳大于或等于:@gte

  • 日期/时间戳小于或等于:@lte

这些匹配运算符可以由各种逻辑运算符组成:

  • @and

  • @or

  • @not

@gte@lte 运算符可以在类型为 DATETIMESTAMP (日期和时间数据类型) 的 ATTRIBUTES 上运算,并接受以下形式的值:YYYY-MM-DD,时区感知日期则为:YYYY-MM-DD+HH:MM。如果未指定时区偏移量,则以 UTC 解析日期。@gte@lte 运算符包含指定的值。

这些运算符可以组合成一个筛选器对象。示例如下:

  • 筛选字符串类列 string_col 等于值 value 的行。

    { "@eq": { "string_col": "value" } }
    
    Copy
  • 筛选 ARRAY 列 array_col 包含值 value 的行。

    { "@contains": { "array_col": "arr_value" } }
    
    Copy
  • 在 TIMESTAMP 列 timestamp_col 处于 2024-11-19``2024-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

返回

返回 OBJECT,其中包含 Cortex Search 服务的查询结果和唯一请求 ID。请参阅 示例 中的示例输出。

使用说明

  • 与使用 Python API 相比,此函数会带来更多延迟。其设计仅用于测试/验证目的。您不应该使用此函数在需要低延迟的最终用户应用程序中提供搜索查询。

  • 此函数仅对字符串字面量查询进行操作。它不接受一批文本数据。

示例

此示例使用 test query 查询名为 sample_service 的服务。该示例返回五个结果(最多),并包括 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"
}
语言: 中文