Kategorien:

Zeichenfolgen- und Binärfunktionen (Large Language Model)

SEARCH_PREVIEW (SNOWFLAKE.CORTEX)

Gibt bei Angabe eines Cortex Search Service-Namens und einer Abfrage eine Antwort vom angegebenen Dienst zurück.

Syntax

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

Argumente

service_name

Name Ihres Cortex Search Service. Verwenden Sie den vollständig qualifizierten Namen, wenn sich der Dienst in einem anderen Schema als dem der aktuellen Sitzung befindet.

query_parameters_object

Ein STRING, der ein JSON-Objekt enthält, das die Abfrageparameter für den Aufruf des Dienstes angibt.

Schlüssel

Typ

Beschreibung

Standard

query

String

Ihre Abfrage, um die Textspalte im Dienst zu durchsuchen.

Dies ist erforderlich.

columns

Array

Eine durch Kommata getrennte Liste von Spalten, die für jedes relevante Ergebnis in der Antwort zurückgegeben werden soll. Diese Spalten müssen in der Quellabfrage für den Dienst enthalten sein.

Suchspalte, die bei der Erstellung des Dienstes angegeben wurde.

filter

Objekt

Ein Filterobjekt zum Filtern der Ergebnisse auf der Grundlage der Daten in den ATTRIBUTES-Spalten. Für eine detaillierte Syntax siehe Filtersyntax.

Leeres Objekt

limit

Integer

Maximale Anzahl der Ergebnisse, die in der Antwort zurückgegeben werden sollen

10

Filtersyntax

Cortex Search unterstützt das Filtern nach den ATTRIBUTES-Spalten, die im Befehl CREATE CORTEX SEARCH SERVICE angegeben sind.

Cortex Search unterstützt vier Vergleichsoperatoren:

Diese Vergleichsoperatoren können mit verschiedenen logischen Operatoren kombiniert werden:

  • @and

  • @or

  • @not

Es gelten die folgenden Nutzungshinweise:

  • Abgleiche gegen NaN („keine Zahl“) Werte in der Quellabfrage werden wie in Besondere Werte beschrieben behandelt.

  • Numerische Festkommawerte mit mehr als 19 Ziffern (ohne führende Nullen) funktionieren nicht mit @eq, @gte oder @lte und werden von diesen Operatoren nicht zurückgegeben (obwohl sie von der Gesamtabfrage unter Verwendung von @not trotzdem zurückgegeben werden könnten).

  • TIMESTAMP und DATE-Filter akzeptieren Werte der Form: YYYY-MM-DD und für zeitzonenabhängige Daten: YYYY-MM-DD+HH:MM. Wenn der Zeitzonen-Offset nicht angegeben wird, wird das Datum in UTC interpretiert.

Diese Operatoren können in einem einzigen Filterobjekt kombiniert werden.

Beispiel

  • Filtern von Zeilen, bei denen die Zeichenfolge-ähnliche Spalte string_col gleich dem Wert value ist.

    { "@eq": { "string_col": "value" } }
    
    Copy
  • Filtern nach Zeilen, in denen die Spalte ARRAY array_col den Wert value enthält.

    { "@contains": { "array_col": "arr_value" } }
    
    Copy
  • Filtern nach Zeilen, in denen NUMERIC Spalte numeric_col zwischen 10,5 und 12,5 (einschließlich) liegt:

    { "@and": [
      { "@gte": { "numeric_col": 10.5 } },
      { "@lte": { "numeric_col": 12.5 } }
    ]}
    
    Copy
  • Filtern nach Zeilen, in denen die Spalte TIMESTAMP timestamp_col zwischen 2024-11-19 und 2024-12-19 (einschließlich) liegt.

    { "@and": [
      { "@gte": { "timestamp_col": "2024-11-19" } },
      { "@lte": { "timestamp_col": "2024-12-19" } }
    ]}
    
    Copy
  • Zusammenstellen von Filtern mit logischen Operatoren:

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

Rückgabewerte

Gibt ein OBJECT zurück, das das Ergebnis Ihrer Abfrage aus Ihrem Cortex Search Service und eine eindeutige Anfrage-ID enthält. Siehe die Beispielausgabe in Beispiele.

Nutzungshinweise

  • Diese Funktion verursacht mehr Latenzzeit als die Verwendung der Python-API. Sie ist nur für Test-/Validierungszwecke gedacht. Sie sollten diese Funktion nicht für Suchabfragen in einer Endbenutzer-Anwendung verwenden, die eine geringe Latenzzeit erfordert.

  • Diese Funktion funktioniert nur bei Abfragen mit Zeichenfolgenliteralen. Sie akzeptiert keinen Batch von Textdaten.

Beispiele

In diesem Beispiel wird ein Dienst namens sample_service mit einer test query abgefragt. Das Beispiel liefert (höchstens) fünf Ergebnisse und enthält die Daten aus den Spalten col1 und 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"
}