FT.SEARCH - Amazon MemoryDB

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

Verwendet den angegebenen Abfrageausdruck, um Schlüssel innerhalb eines Index zu finden. Sobald sie gefunden wurden, können die Anzahl und/oder der Inhalt der indizierten Felder innerhalb dieser Schlüssel zurückgegeben werden. Weitere Informationen finden Sie unter Abfrageausdruck für die Vektorsuche.

Informationen zum Erstellen von Daten zur Verwendung in diesen Beispielen finden Sie im Befehl FT.CREATE.

Syntax

FT.SEARCH <index-name> <query> [RETURN <token_count> (<field-identifier> [AS <alias>])+] [TIMEOUT timeout] [PARAMS <count> <name> <value> [<name> <value>]] [LIMIT <offset> <count>] [COUNT]
  • RETURN: Diese Klausel identifiziert, welche Felder eines Schlüssels zurückgegeben werden. Die optionale AS-Klausel für jedes Feld überschreibt den Namen des Felds im Ergebnis. Es können nur Felder angegeben werden, die für diesen Index deklariert wurden.

  • LIMIT: <offset><count>: Diese Klausel ermöglicht die Paginierung, da nur die Schlüssel zurückgegeben werden, die den Offset- und Count-Werten entsprechen. Wenn diese Klausel weggelassen wird, wird standardmäßig „LIMIT 0 10“ verwendet, d. h. es werden nur maximal 10 Schlüssel zurückgegeben.

  • PARAMS: Zweimal so viele Schlüssel-Wert-Paare. Parameter-Schlüssel/Wert-Paare können innerhalb des Abfrageausdrucks referenziert werden. Weitere Informationen finden Sie unter Abfrageausdruck für die Vektorsuche.

  • COUNT: Diese Klausel unterdrückt die Rückgabe des Inhalts von Schlüsseln, es wird nur die Anzahl der Schlüssel zurückgegeben. Dies ist ein Alias für „LIMIT 0 0".

Ergebnis

Gibt ein Array oder eine Fehlerantwort zurück.

  • Wenn der Vorgang erfolgreich abgeschlossen wird, wird ein Array zurückgegeben. Das erste Element ist die Gesamtzahl der Schlüssel, die der Abfrage entsprechen. Die übrigen Elemente sind Paare aus Schlüsselname und Feldliste. Die Feldliste ist ein weiteres Array, das Paare von Feldnamen und Werten umfasst.

  • Wenn der Index gerade wieder aufgefüllt wird, gibt der Befehl sofort eine Fehlerantwort zurück.

  • Wenn das Timeout erreicht ist, gibt der Befehl eine Fehlerantwort zurück.

Beispiel: Führen Sie einige Suchanfragen durch

Anmerkung

Im folgenden Beispiel werden Argumente verwendet, die für redis-cli typisch sind, wie z. B. das Entfernen von Anführungszeichen und das Entfernen von Escapes von Daten, bevor sie an Redis OSS gesendet werden. Um andere Programmiersprachenclients (Python, Ruby, C# usw.) zu verwenden, befolgen Sie die Regeln dieser Umgebungen für den Umgang mit Zeichenketten und Binärdaten. Weitere Informationen zu unterstützten Clients finden Sie unter Tools to Build On AWS

Eine Hash-Suche

FT.SEARCH hash_idx1 "*=>[KNN 2 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 2 2) "hash:0" 3) 1) "__VEC_score" 2) "0" 3) "vec" 4) "\x00\x00\x00\x00\x00\x00\x00\x00" 4) "hash:1" 5) 1) "__VEC_score" 2) "1" 3) "vec" 4) "\x00\x00\x00\x00\x00\x00\x80\xbf"

Dies führt zu zwei Ergebnissen, sortiert nach ihrer Punktzahl, der Entfernung vom Abfragevektor (eingegeben als Hexadezimalwert).

JSON-Suchen

FT.SEARCH json_idx1 "*=>[KNN 2 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 2 2) "json:2" 3) 1) "__VEC_score" 2) "11.11" 3) "$" 4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]" 4) "json:0" 5) 1) "__VEC_score" 2) "91" 3) "$" 4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]"

Dies führt zu den beiden Ergebnissen, die sich am nächsten kommen, sortiert nach ihrer Punktzahl. Beachten Sie, dass die JSON-Vektorwerte in Gleitkommazahlen umgewandelt werden und es sich bei dem Abfragevektor immer noch um Vektordaten handelt. Beachten Sie außerdem, dass es nur zwei Ergebnisse gibt, da der KNN Parameter 2 ist. Ein größerer Wert gibt mehr Ergebnisse zurück:

FT.SEARCH json_idx1 "*=>[KNN 100 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 3 2) "json:2" 3) 1) "__VEC_score" 2) "11.11" 3) "$" 4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]" 4) "json:0" 5) 1) "__VEC_score" 2) "91" 3) "$" 4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]" 6) "json:1" 7) 1) "__VEC_score" 2) "9100" 3) "$" 4) "[{\"vec\":[10.0, 20.0, 30.0, 40.0, 50.0, 60.0]}]"