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): Hiermit werden nur die Dokument-IDs zurückgegeben. Der Parameter Inhalte.TIMEOUT
(optional): Hier können Sie ein Zeitlimit für den Suchbefehl festlegen.PARAMS
(optional): Die Anzahl der Schlüssel/Wert-Paare multipliziert mit 2.[LIMIT offset num]
(optional): Hier können Sie die Paginierung mit einem Offset und eine Zahl. Wenn Sie diesen Parameter nicht verwenden, ist der StandardwertLIMIT 0 10
. die maximal zehn 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 aus folgenden Elementen:
- Schlüsselwert: [$score_as ] score_value
- Entfernungswert
- Attributname
- Vektorwert
Wenn
NOCONTENT
verwendet wird, bestehen die Array-Elemente 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);