FT.SEARCH
durchsucht den Index mit der angegebenen Abfrage und gibt den
angegebenen Werten.
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): Hier können Sie ein Zeitlimit 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
. die maximal 10 Schlüssel zurückgibt.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 der zurückgegebenen Arrays sind die am besten übereinstimmenden Ergebnisse der Abfrage. Jedes Array -Element hat Folgendes:
Den 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
In diesem Beispiel wird davon ausgegangen, dass Sie einen HNSW-Index für das Hash-Feld erstellt haben.
Vec
Angenommen, Sie haben bereits einige Hash-Einträge hinzugefügt, die Folgendes enthalten:
Feldnamen und möchte den Vektor finden, der am besten mit einer bestimmten Eingabe übereinstimmt
Vektoren.
Hash-Feldnamen:
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
Array zurückgeben:
[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);