FT.SEARCH - Amazon ElastiCache

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

FT.SEARCH

Führt eine Suche im angegebenen Index durch. Die Schlüssel, die dem Abfrageausdruck entsprechen, werden zurückgegeben.

FT.SEARCH <index-name> <query> [NOCONTENT] [RETURN <token_count> (<field-identifier> [AS <alias>])+] [TIMEOUT timeout] [PARAMS <count> <name> <value> [<name> <value>]] [LIMIT <offset> <count>]
  • <index>(erforderlich): Dieser Indexname, den Sie abfragen möchten.

  • <query>(erforderlich): Die Abfragezeichenfolge, Einzelheiten finden Sie unten.

  • NOCONTENT (optional): Falls vorhanden, werden nur die resultierenden Schlüsselnamen zurückgegeben, keine Schlüsselwerte sind enthalten.

  • TIMEOUT <timeout>(optional): Ermöglicht das Festlegen eines Timeout-Werts für den Suchbefehl. Dies muss eine Ganzzahl in Millisekunden sein.

  • <count><name1><value1><name2><value2>PARAMETER... (optional): count entspricht der Anzahl der Argumente, d. h. der doppelten Anzahl von Wertenamenpaaren. Einzelheiten zur Verwendung finden Sie in der Abfragezeichenfolge.

  • RÜCKKEHR <count><field1><field2>... (optional): Anzahl ist die Anzahl der Felder, die zurückgegeben werden sollen. Gibt die Felder an, die Sie aus Ihren Dokumenten abrufen möchten, zusammen mit allen Aliasnamen für die zurückgegebenen Werte. Standardmäßig werden alle Felder zurückgegeben, es sei denn, die Option NOCONTENT ist gesetzt. In diesem Fall werden keine Felder zurückgegeben. Wenn count auf 0 gesetzt ist, verhält es sich genauso wie NOCONTENT.

  • LIMIT: <offset><count>: Ermöglicht es Ihnen, einen Teil des Ergebnisses auszuwählen. Die ersten <offset>Schlüssel werden übersprungen und nur ein Maximum an <count>Schlüsseln ist enthalten. Die Standardeinstellung ist LIMIT 0 10, wodurch maximal 10 Schlüssel zurückgegeben werden.

  • PARAMS: Zweimal so viele Schlüssel-Wert-Paare. Auf key/value Parameterpaare kann innerhalb des Abfrageausdrucks verwiesen werden. Weitere Informationen finden Sie unter Abfrageausdruck für die Vektorsuche.

  • DIALEKT: <dialect>(optional): Gibt Ihren Dialekt an. Der einzige unterstützte Dialekt ist 2.

ANTWORT

Der Befehl gibt bei Erfolg entweder ein Array oder einen Fehler zurück.

Bei Erfolg steht der erste Eintrag im Antwort-Array für die Anzahl der passenden Schlüssel, gefolgt von einem Array-Eintrag für jeden passenden Schlüssel. Beachten Sie, dass die angegebene LIMIT Option nur die Anzahl der zurückgegebenen Schlüssel steuert und den Wert des ersten Eintrags nicht beeinflusst.

Wenn NOCONTENT angegeben, enthält jeder Eintrag in der Antwort nur den passenden Schlüsselnamen. Andernfalls enthält jeder Eintrag den passenden Schlüsselnamen, gefolgt von einem Array der zurückgegebenen Felder. Die Ergebnisfelder für einen Schlüssel bestehen aus einer Reihe von name/value Paaren. Das erste name/value Paar steht für die berechnete Entfernung. Der Name dieses Paares wird aus dem Vektorfeldnamen gebildet, dem „__“ vorangestellt und „_score“ angehängt wird. Der Wert entspricht der berechneten Entfernung. Die verbleibenden name/value Paare sind die Elemente und Werte des Schlüssels, der durch die Klausel gesteuert wird. RETURN

Die Abfragezeichenfolge entspricht dieser Syntax:

<filtering>=>[ KNN <K> @<vector_field_name> $<vector_parameter_name> <query-modifiers> ]

Wobei Folgendes gilt:

  • <filtering>: Ist entweder ein* oder ein Filterausdruck. Ein * bedeutet, dass keine Filterung erfolgt und somit alle Vektoren innerhalb des Index durchsucht werden. Ein Filterausdruck kann angegeben werden, um eine Teilmenge der zu durchsuchenden Vektoren zu bezeichnen.

  • <vector_field_name>: Der Name eines Vektorfeldes innerhalb des angegebenen Index.

  • <K>: Die Anzahl der Vektoren mit den nächsten Nachbarn, die zurückgegeben werden sollen.

  • <vector_parameter_name>: Ein PARAM-Name, dessen entsprechender Wert den Abfragevektor für den KNN-Algorithmus bereitstellt. Beachten Sie, dass dieser Parameter als binäre 32-Bit-Gleitkommazahl nach IEEE 754 im Little-Endian-Format codiert werden muss.

  • <query-modifiers>: (Optional) Eine Liste von keyword/value Paaren, die diese spezielle KNN-Suche modifizieren. Derzeit werden zwei Schlüsselwörter unterstützt:

    • EF_RUNTIME: Dieses Schlüsselwort wird von einem Integer-Wert begleitet, der den Standardwert von EF_RUNTIME überschreibt, der bei der Indexerstellung angegeben wurde.

    • AS: Dieses Schlüsselwort wird von einem Zeichenkettenwert begleitet, der im Ergebnis zum Namen des Bewertungsfeldes wird und den Standardalgorithmus zur Generierung von Score-Feldnamen überschreibt.

Ausdruck filtern

Ein Filterausdruck besteht aus einer logischen Kombination von Tag-Suchoperatoren und numerischen Suchoperatoren, die in Klammern stehen.

Markierung

Der Tag-Suchoperator wird mit einer oder mehreren Zeichenfolgen angegeben, die durch das Zeichen | getrennt sind. Ein Schlüssel entspricht dem Tag-Suchoperator, wenn das angegebene Feld eine der angegebenen Zeichenketten enthält.

@<field_name>:{<tag>} or @<field_name>:{<tag1> | <tag2>} or @<field_name>:{<tag1> | <tag2> | ...}

Die folgende Abfrage gibt beispielsweise Dokumente mit blauer ODER schwarzer ODER grüner Farbe zurück.

@color:{blue | black | green}

Als weiteres Beispiel gibt die folgende Abfrage Dokumente zurück, die „Hello World“ oder „Hello Universe“ enthalten.

@description:{hello world | hello universe}

Numerischer Bereich

Der numerische Bereichsoperator ermöglicht das Filtern von Abfragen, sodass nur Werte zurückgegeben werden, die zwischen einem bestimmten Start- und Endwert liegen. Sowohl inklusive als auch exklusive Bereichsabfragen werden unterstützt. Für einfache relationale Vergleiche kann +inf, -inf mit einer Bereichsabfrage verwendet werden. Die Syntax für einen Bereichssuchoperator lautet:

@<field_name>:[ [(] <bound> [(] <bound>]

... wobei <bound>entweder eine Zahl oder +inf oder -inf ist. Grenzen ohne eine führende offene Klammer sind inklusiv, wohingegen Grenzen mit der führenden offenen Klammer exklusiv sind.

Verwenden Sie die folgende Tabelle als Leitfaden für die Zuordnung mathematischer Ausdrücke zu Filterabfragen:

min <= field <= max @field:[min max] min < field <= max @field:[(min max] min <= field < max @field:[min (max] min < field < max @field:[(min (max] field >= min @field:[min +inf] field > min @field:[(min +inf] field <= max @field:[-inf max] field < max @field:[-inf (max] field == val @field:[val val]

Logische Operatoren

Mehrere Tags und numerische Suchoperatoren können verwendet werden, um komplexe Abfragen mithilfe logischer Operatoren zu erstellen.

Logisches UND

Um ein logisches UND festzulegen, verwenden Sie ein Leerzeichen zwischen den Prädikaten. Beispiel:

query1 query2 query3

Logisches ODER

Um ein logisches ODER festzulegen, verwenden Sie ein Leerzeichen zwischen den Prädikaten. Beispiel:

query1 | query2 | query3

Logische Negation

Jede Abfrage kann negiert werden, indem das - Zeichen vor jeder Abfrage vorangestellt wird. Negative Abfragen geben alle Einträge zurück, die nicht mit der Abfrage übereinstimmen. Dies schließt auch Schlüssel ein, die das Feld nicht enthalten.

Eine negative Abfrage auf @genre: {comedy} gibt beispielsweise alle Bücher zurück, die keine Komödie sind UND alle Bücher, die kein Genrefeld haben.

Die folgende Abfrage gibt alle Bücher des Genres „Komödie“ zurück, die nicht zwischen 2015 und 2024 veröffentlicht wurden oder die kein Jahresfeld haben: @genre: [Komödie] - @year: [2015 2024]

Rangfolge der Operatoren

Es gelten die typischen Regeln für die Rangfolge von Operatoren, d. h. logisches NEGATE hat die höchste Priorität, gefolgt von logischem UND dann logisches ODER mit der niedrigsten Priorität. Klammern können verwendet werden, um die Standardregeln für die Rangfolge außer Kraft zu setzen.

Beispiele für die Kombination logischer Operatoren

Logische Operatoren können zu komplexen Filterausdrücken kombiniert werden.

Die folgende Abfrage gibt alle Bücher mit den Genres „Komödie“ oder „Horror“ (AND) zurück, die zwischen 2015 und 2024 veröffentlicht wurden: @genre:[comedy|horror] @year:[2015 2024]

Die folgende Abfrage gibt alle Bücher mit den Genres „Komödie“ oder „Horror“ (OR) zurück, die zwischen 2015 und 2024 veröffentlicht wurden: @genre:[comedy|horror] | @year:[2015 2024]

Die folgende Abfrage gibt alle Bücher zurück, die entweder kein Genrefeld haben oder deren Genrefeld nicht „Komödie“ entspricht und die zwischen 2015 und 2024 veröffentlicht wurden: -@genre:[comedy] @year:[2015 2024]