- 类别:
字符串和二进制函数 (AI Functions)
SEARCH_PREVIEW (SNOWFLAKE.CORTEX)¶
给定 Cortex Search 服务名称和查询,从指定的服务返回响应。
语法¶
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'<service_name>',
'<query_parameters_object>'
)
实参¶
service_nameCortex Search 服务的名称。如果服务位于与当前会话不同的架构中,则使用完全限定名称。
query_parameters_objectSTRING 包含 JSON 对象,该对象指定用于调用服务的查询参数。
键
类型
描述
默认值
query字符串
您的搜索查询,用于搜索服务中的文本列。
这是必需的。
columns数组
列的以逗号分隔列表,用于返回响应中每个相关结果的列。这些列必须包含在服务的源查询中。
创建服务时指定的搜索列。
filter对象
筛选对象,用于根据
ATTRIBUTES列中的数据筛选结果。有关详细语法,请参阅 筛选器语法。空对象
limit整数
要在响应中返回的最大结果数。
10
筛选器语法¶
Cortex Search 支持对 CREATE CORTEX SEARCH SERVICE 命令中指定的 ATTRIBUTES 列进行筛选。
Cortex Search 支持五种匹配运算符:
ARRAY 包含运算符:
@containsNUMERIC 或 DATE/TIMESTAMP 大于或等于运算符:
@gteNUMERIC 或 DATE/TIMESTAMP 小于或等于运算符:
@lte主键 相等性:
@primarykey
这些匹配运算符可以由各种逻辑运算符组成:
@and@or@not
以下使用说明适用:
超过 19 位数的 定点 数值(不包括前导零)不适用
@eq、@gte或@lte,也不会由这些运算符返回(尽管使用@not时,整个查询仍可以返回此类数值)。TIMESTAMP和DATE筛选器接受YYYY-MM-DD形式的值,对于时区感知型日期,可接受:YYYY-MM-DD+HH:MM。如果未指定时区偏移量,则以 UTC 解析日期。@primarykey仅适用于配置了 主键 的服务。筛选器的值必须为 JSON 对象,且需将每个主键列映射到其对应的值(或NULL)。
这些运算符可以组合成一个筛选器对象。
示例¶
筛选字符串类列
string_col等于值value的行。{ "@eq": { "string_col": "value" } }
筛选到具有指定主键的行。
{ "@primarykey": { "region": "us-west-1", "agent_id": "abc123" } }
筛选 ARRAY 列
array_col包含值value的行。{ "@contains": { "array_col": "arr_value" } }
在 NUMERIC 列
numeric_col处于 10.5 和 12.5(含)之间的行上进行筛选:{ "@and": [ { "@gte": { "numeric_col": 10.5 } }, { "@lte": { "numeric_col": 12.5 } } ]}
在 TIMESTAMP 列
timestamp_col处于2024-11-19和 ``2024-12-19``(含)之间的行上进行筛选。{ "@and": [ { "@gte": { "timestamp_col": "2024-11-19" } }, { "@lte": { "timestamp_col": "2024-12-19" } } ]}
用逻辑运算符组成筛选器:
// 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" } } ] }
返回¶
返回 OBJECT,其中包含 Cortex Search 服务的查询结果和唯一请求 ID。请参阅 `示例`_ 中的示例输出。
使用说明¶
与使用 Python API 相比,此函数会带来更多延迟。其设计仅用于测试/验证目的。您不应该使用此函数在需要低延迟的最终用户应用程序中提供搜索查询。
此函数仅对字符串字面量查询进行操作。它不接受一批文本数据。
示例¶
此示例使用 test query 查询名为 sample_service 的服务。该示例返回五个结果(最多),并包括 col1 和 col2 列中的数据。
SELECT
SNOWFLAKE.CORTEX.SEARCH_PREVIEW (
'mydb.mysch.sample_service',
'{
"query": "test query",
"columns": ["col1", "col2"],
"limit": 3
}'
);
{
"results":[
{"col1":"text", "col2":"text"},
{"col1":"text", "col2":"text"},
{"col1":"text", "col2":"text"}
],
"request_id":"a27d1d85-e02c-4730-b320-74bf94f72d0d"
}