- Catégories :
Fonctions de chaîne et fonctions binaires (Fonctions AI)
SEARCH_PREVIEW (SNOWFLAKE.CORTEX)¶
Pour un nom de service Cortex Search et une requête donnés, renvoie une réponse du service spécifié.
Syntaxe¶
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'<service_name>',
'<query_parameters_object>'
)
Arguments¶
service_nameNom de votre service Cortex Search. Utilisez le nom complet si le service se trouve dans un schéma différent de la session en cours.
query_parameters_objectUne STRING qui contient un objet JSON qui spécifie les paramètres de requête pour l’appel du service.
Clé
Type
Description
Par défaut
queryChaîne
Votre requête de recherche, pour rechercher dans la colonne de texte du service.
Cet élément est obligatoire.
columnsTableau
Une liste de colonnes séparées par des virgules à renvoyer pour chaque résultat pertinent dans la réponse. Ces colonnes doivent être incluses dans la requête source du service.
Colonne de recherche qui a été spécifiée lors de la création du service.
filterObjet
Un objet de filtre pour filtrer les résultats en fonction des données dans les colonnes
ATTRIBUTES. Pour une syntaxe détaillée, voir Syntaxe de filtre.Objet vide
limitEntier
Nombre maximal de résultats à renvoyer dans la réponse.
10
Syntaxe de filtre¶
Cortex Search prend en charge le filtrage sur les colonnes ATTRIBUTES spécifiées dans la commande CREATE CORTEX SEARCH SERVICE.
Cortex Search prend en charge cinq opérateurs de recherche :
ARRAY contient :
@containsNUMERIC ou DATE/TIMESTAMP supérieur ou égal à :
@gteNUMERIC ou DATE/TIMESTAMP inférieur ou égal à :
@lteclé principale égalité :
@primarykey
Ces opérateurs de correspondance peuvent être composés de différents opérateurs logiques :
@and@or@not
Les notes d’utilisation suivantes s’appliquent :
Les correspondances avec les valeurs
NaN(« not a number ») de la requête source sont traitées comme décrit dans Valeurs spéciales.Fixed-point numeric values with more than 19 digits (not including leading zeroes) do not work with
@eq,@gte, or@lteand will not be returned by these operators.Par exemple, si la requête source contient une grande valeur, en l’utilisation de
@eqpour rechercher cette valeur exacte ne renverra aucun résultat.Ces grandes valeurs peuvent être renvoyées par le filtre global à l’aide de
@not(par exemple, alors que@eq Xne renverra aucune valeur pour certaines valeurs élevées de X,@not @eq Yla renverra).
TIMESTAMPetDATEacceptent des valeurs sous la forme :YYYY-MM-DDet, pour les dates sensibles au fuseau horaire :YYYY-MM-DD+HH:MM. Si le décalage du fuseau horaire n’est pas spécifié, la date est interprétée en UTC.@primarykeyest uniquement pris en charge pour les services configurés avec une clé principale. La valeur du filtre doit être un objet JSON mappant chaque colonne de clé principale avec sa valeur correspondante (ouNULL).
Ces opérateurs peuvent être combinés en un seul objet filtre.
Exemple¶
Le filtrage sur les lignes où se trouve une colonne de type chaîne
string_colest égal à la valeurvalue.{ "@eq": { "string_col": "value" } }
Filtrer une ligne avec la clé principale spécifiée,
{ "@primarykey": { "region": "us-west-1", "agent_id": "abc123" } }
Filtrage sur les lignes où la colonne ARRAY
array_colcontient de la valeurvalue.{ "@contains": { "array_col": "arr_value" } }
Filtrage des lignes dont la colonne NUMERIC
numeric_colest comprise entre 10,5 et 12,5 (inclus) :{ "@and": [ { "@gte": { "numeric_col": 10.5 } }, { "@lte": { "numeric_col": 12.5 } } ]}
Filtrer les lignes où la colonne TIMESTAMP
timestamp_colest comprise entre2024-11-19et2024-12-19(inclus).{ "@and": [ { "@gte": { "timestamp_col": "2024-11-19" } }, { "@lte": { "timestamp_col": "2024-12-19" } } ]}
Composition de filtres avec des opérateurs logiques :
// 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" } } ] }
Renvoie¶
Renvoie OBJECT qui contient le résultat de votre requête auprès de votre service Cortex Search et un ID de requête unique. Voir l’exemple de sortie dans Exemples.
Notes sur l’utilisation¶
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.
Cette fonction tronque les résultats de la recherche s’ils dépassent 300 kB. La surface REST autorise les réponses jusqu’à 10MB.
Exemples¶
Cet exemple interroge un service nommé sample_service avec une test query. L’exemple renvoie cinq résultats (au maximum) et inclut les données des colonnes col1 et 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"
}