FT.SEARCH
durchsucht den Index mit der angegebenen Abfrage und gibt die angegebenen Werte zurück.
Weitere Informationen zur Abfragesyntax finden Sie unter Abfragesyntax.
Syntax
FT.SEARCH index query [NOCONTENT] [TIMEOUT timeout] [PARAMS nargs name value [ name value ...]] [LIMIT offset num] DIALECT 2
index
(erforderlich): Der Index, den Sie abfragen möchten.query
(erforderlich): Dies ist Ihre Abfrage. Weitere Informationen zur Abfragesyntax finden Sie unter Abfragesyntax.NOCONTENT
(optional): Es werden nur die Dokument-IDs zurückgegeben, der Inhalt wird ausgeschlossen.TIMEOUT
(optional): Hiermit können Sie einen Zeitüberschreitungswert für den Suchbefehl festlegen.PARAMS
(optional): Die Anzahl der Schlüssel/Wert-Paare multipliziert mit zwei.[LIMIT offset num]
(optional): Hiermit können Sie die Paginierung mit einem Offset und einer Zählung auswählen. Wenn Sie diesen Parameter nicht verwenden, ist der StandardwertLIMIT 0 10
. Dabei werden maximal 10 Schlüssel zurückgegeben.DIALECT 2
(optional): Gibt den Dialekt an. Der einzige unterstützte Dialekt ist Dialekt 2.
Befehlsrückgabe
Dieser Befehl gibt ein Array oder eine Fehlermeldung zurück. Die Elemente des zurückgegebenen Arrays stellen die besten Übereinstimmungen der Abfrage dar. Jedes Arrayelement hat Folgendes:
Der Hash-Schlüssel des Eintrags
Ein Array mit folgenden Elementen:
- Schlüsselwert: [$score_as ] score_value
- Entfernungswert
- Attributname
- Vektorwert
Wenn
NOCONTENT
verwendet wird, bestehen die Arrayelemente nur aus den Dokument-IDs.
Beispiel
Angenommen, Sie haben einen HNSW-Index für das Hash-Feld Vec
erstellt. Angenommen, Sie haben bereits einige Hash-Einträge mit den folgenden Feldnamen hinzugefügt und möchten den am besten zu einem bestimmten Eingabevektor passenden Vektor finden.
Namen von Hash-Feldern:
Vec
– der Feldwert enthält den tatsächlichen Vektor.some_hash_key
– einige zugehörige Vektormetadaten
Verwenden Sie den Befehl FT.SEARCH
, um eine Suche auszuführen:
FT.SEARCH idx "*=>[KNN 3 @vec $BLOB EF_RUNTIME 40 AS score]" PARAMS 2 BLOB "\x12\xa9\xf5\x6c" DIALECT 2
Rückgabearray:
[3, b'key_192', [b'__embedding_score', b'0.061539709568', b'embedding', b'd\xdeA?\xb7\\xbb>!\xb3\xd8>0\x94n?\xbd\xbco=WX\xe4>kN\x9e>\x1aV0>Z\x92*?\rD\x04>', b'some_hash_key', b'some_hash_key_value_192'], b'key_209', [b'__embedding_score', b'0.0803312063217', b'embedding', b's\xe1W?\xa4\x1d\xad>\xb8\x99Q?\xa9u ?6\xc8\xb2>=j5?!\x13\x96>~\x13\xb9=\xebcX?\x92\x86\xb8>', b'some_hash_key', b'some_hash_key_value_209'], b'key_821', [b'__embedding_score', b'0.0615693926811', b'embedding', b')\x1e\x03?\xa6\x10\xe0>^-\xe5xK?\xbb\xa3\r>\xa1\x00\x87>\x18u\xa2=\x06\xa2;>,\xeb=?\x0e%\xa4>', b'some_hash_key', b'some_hash_key_value_821']]
Node.js-Beispiel
const Redis = require("ioredis"); const redis = new Redis(); const searchResult = await redis.call("FT.SEARCH", "idx", "*=>[KNN 3 @vector $BLOB EF_RUNTIME 40 AS score]", "PARAMS", "2", "BLOB", "\x00\x00\x00\x00", "DIALECT", "2"); console.log(searchResult);