카테고리:

문자열 및 이진 함수 (AI 함수)

SEARCH_PREVIEW(SNOWFLAKE.CORTEX)

Cortex Search Service 이름과 쿼리가 주어지면 지정된 서비스에서 응답을 반환합니다.

구문

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

인자

service_name

Cortex Search Service의 이름입니다. 서비스가 현재 세션과 다른 스키마에 있는 경우 정규화된 이름을 사용합니다.

query_parameters_object

서비스 호출을 위한 쿼리 매개 변수를 지정하는 JSON 오브젝트가 포함된 STRING 입니다.

타입

설명

기본값

query

String

사용자의 검색어는 서비스의 텍스트 열을 검색하는 데 사용됩니다.

필수 사항입니다.

columns

배열

응답에서 각 관련 결과에 대해 반환할 열의 쉼표로 구분된 목록입니다. 이러한 열은 서비스의 소스 쿼리에 포함되어야 합니다.

서비스 생성 시 지정된 검색 열입니다.

filter

오브젝트

ATTRIBUTES 열의 데이터를 기준으로 결과를 필터링하기 위한 필터 오브젝트입니다. 자세한 구문은 필터 구문 섹션을 참조하십시오.

빈 오브젝트

limit

Integer

응답에서 반환할 결과의 최대 개수입니다.

10

필터 구문

Cortex Search는 CREATE CORTEX SEARCH SERVICE 명령에 지정된 ATTRIBUTES 열에 대한 필터링을 지원합니다.

Cortex Search는 다섯 가지 일치하는 연산자를 지원합니다.

이러한 일치 연산자는 다양한 논리 연산자로 구성될 수 있습니다.

  • @and

  • @or

  • @not

다음 사용법 노트가 적용됩니다.

  • 소스 쿼리에서 NaN (‘숫자 아님’) 값에 대한 일치는 특수한 값 에 설명된 대로 처리됩니다.

  • 19자리 이상의 고정소수점 숫자 (선행 0은 제외)는 @eq, @gte 또는 @lte 에서 작동하지 않으며, 이러한 연산자에서는 반환되지 않습니다(@not 을 사용하면 전체 쿼리에서 반환될 수는 있음).

  • TIMESTAMPDATE 필터는 YYYY-MM-DD, 타임존 인식 날짜의 경우 YYYY-MM-DD+HH:MM 와 같은 형식의 값을 허용합니다. 시간대 오프셋을 지정하지 않으면 날짜는 UTC 로 해석됩니다.

  • @primarykey기본 키 로 구성된 서비스에 대해서만 지원됩니다. 필터의 값은 모든 기본 키 열을 해당 값(또는 NULL)에 매핑하는 JSON 오브젝트여야 합니다.

이러한 연산자를 1개의 필터 오브젝트로 결합할 수 있습니다.

  • 문자열과 같은 열 string_colvalue 값과 같은 행을 필터링합니다.

    { "@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 Service의 쿼리 결과와 고유한 요청 ID가 포함된 OBJECT 를 반환합니다. `예`_ 의 예시 출력을 참조하십시오.

사용법 노트

  • 이 함수는 Python API를 사용할 때보다 지연 시간이 더 길어집니다. 테스트/검증 목적으로만 사용하도록 설계되었습니다. 지연 시간이 짧아야 하는 최종 사용자 애플리케이션에서 검색 쿼리를 처리하는 데 이 함수를 사용하면 안 됩니다.

  • 이 함수는 문자열 리터럴 쿼리에서만 작동합니다. 텍스트 데이터 배치는 허용하지 않습니다.

다음 예에서는 test querysample_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"
}