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): Damit werden nur die Dokument-IDs zurückgegeben. Der Inhalt wird dabei 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 2.[LIMIT offset num]
(optional): Hier können Sie die Paginierung mit einem Offset und einer Zahlenanzahl auswählen. Wenn Sie diesen Parameter nicht verwenden, wird der StandardwertLIMIT 0 10
verwendet, der 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 des zurückgegebenen Arrays stellen die am besten passenden Ergebnisse der Abfrage dar. 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
Angenommen, Sie haben für dieses Beispiel einen HNSW-Index für das Hash-Feld Vec
erstellt. Angenommen, Sie haben bereits einige Hash-Einträge hinzugefügt, die die folgenden Feldnamen enthalten, und möchten den am besten passenden Vektor für einen bestimmten Eingabevektor ermitteln.
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>^-\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);