Categorias:

Funções de cadeia de caracteres e binários (funções de AI)

SEARCH_PREVIEW (SNOWFLAKE.CORTEX)

Dado um nome do Cortex Search Service e uma consulta, retorna uma resposta do serviço especificado.

Sintaxe

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

Argumentos

service_name

Nome de seu Cortex Search Service. Use o nome totalmente qualificado se o serviço estiver em um esquema diferente da sessão atual.

query_parameters_object

Uma STRING com um objeto JSON que especifica os parâmetros de consulta para invocar o serviço.

Chave

Tipo

Descrição

Padrão

query

Cadeia de caracteres

Sua consulta de pesquisa, para pesquisar na coluna de texto no serviço.

Isso é obrigatório.

columns

Matriz

Uma lista de colunas separadas por vírgulas a serem retornadas para cada resultado relevante na resposta. Essas colunas devem ser incluídas na consulta de origem do serviço.

Coluna de pesquisa que foi especificada quando o serviço foi criado.

filter

Objeto

Um objeto de filtro para filtrar resultados com base nos dados nas colunas ATTRIBUTES. Para sintaxe detalhada, consulte Sintaxe do filtro.

Objeto vazio

limit

Inteiro

Número máximo de resultados a serem retornados na resposta.

10

Sintaxe do filtro

O Cortex Search oferece suporte à filtragem nas colunas ATTRIBUTES especificadas no comando CREATE CORTEX SEARCH SERVICE.

O Cortex Search oferece suporte a cinco operadores de correspondência:

Esses operadores correspondentes podem ser compostos com vários operadores lógicos:

  • @and

  • @or

  • @not

As seguintes notas de uso se aplicam:

  • A correspondência com os valores NaN (“not a number”) na consulta de origem é tratada conforme descrito em Valores especiais.

  • Valores numéricos de ponto fixo com mais de 19 dígitos (sem incluir zeros à esquerda) não funcionam com @eq, @gte ou @lte e não serão retornados por esses operadores.

    • Por exemplo, se houver um valor grande na consulta de origem, usar @eq para corresponder a esse valor exato não retornará resultados.

    • Esses valores grandes ainda podem ser retornados pelo filtro geral com o uso de @not (por exemplo, enquanto @eq X não retornará valores para algum X grande, @not @eq Y retornará).

  • Os filtros TIMESTAMP e DATE aceitam valores no formato: YYYY-MM-DD e, para datas com reconhecimento de fuso horário: YYYY-MM-DD+HH:MM. Se o deslocamento de fuso horário não for especificado, a data será interpretada em UTC.

  • @primarykey só é compatível com serviços configurados com uma chave primária. O valor do filtro deve ser um objeto JSON que mapeia cada coluna de chave primária para seu valor correspondente (ou NULL).

Esses operadores podem ser combinados em um único objeto de filtro.

Exemplo

  • Filtro em linhas onde a coluna do tipo cadeia de caracteres string_col é igual ao valor value.

    { "@eq": { "string_col": "value" } }
    
    Copy
  • Filtragem para uma linha com a chave primária especificada,

    { "@primarykey": { "region": "us-west-1", "agent_id": "abc123" } }
    
    Copy
  • Filtro em linhas onde a coluna ARRAY array_col contém o valor value.

    { "@contains": { "array_col": "arr_value" } }
    
    Copy
  • Filtragem de linhas em que a coluna NUMERIC numeric_col está entre 10,5 e 12,5 (inclusive):

    { "@and": [
      { "@gte": { "numeric_col": 10.5 } },
      { "@lte": { "numeric_col": 12.5 } }
    ]}
    
    Copy
  • Filtragem de linhas em que a coluna TIMESTAMP timestamp_col está entre 2024-11-19 e 2024-12-19 (inclusive).

    { "@and": [
      { "@gte": { "timestamp_col": "2024-11-19" } },
      { "@lte": { "timestamp_col": "2024-12-19" } }
    ]}
    
    Copy
  • Composição de filtros com operadores lógicos:

    // 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

Retornos

Retorna um OBJECT com o resultado de sua consulta do Cortex Search Service e um ID de solicitação exclusiva. Consulte a saída do exemplo em Exemplos.

Notas de uso

  • Esta função foi projetada para teste e validação e gera mais latência do que o uso das APIs REST ou Python. Use outros métodos para realizar consultas de pesquisa em um aplicativo de usuário final que exija baixa latência.

  • Esta função opera apenas em argumentos constantes. Ela não aceita colunas de tabela como entrada.

  • Esta função trunca os resultados da pesquisa se excederem 300 kB. A superfície REST permite respostas de até 10MB.

Exemplos

Este exemplo consulta um serviço nomeado sample_service com uma test query. O exemplo retorna cinco resultados (no máximo) e inclui os dados das colunas col1 e col2.

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"
}