FT.SEARCH
esegue la ricerca nell'indice con la query fornita e restituisce i valori specificati.
Per informazioni dettagliate sulla sintassi delle query, consulta Sintassi delle query.
Sintassi
FT.SEARCH index query [NOCONTENT] [TIMEOUT timeout] [PARAMS nargs name value [ name value ...]] [LIMIT offset num] DIALECT 2
index
(obbligatorio): questo indice su cui vuoi eseguire una query.query
(obbligatorio): questa è la query. Per maggiori dettagli sulla sintassi delle query, consulta Sintassi delle query.NOCONTENT
(facoltativo): restituisce solo gli ID documento ed esclude i contenuti.TIMEOUT
(facoltativo): consente di impostare un valore di timeout per il comando di ricerca.PARAMS
(facoltativo): il numero di coppie chiave-valore moltiplicato per due.- (Facoltativo)
[LIMIT offset num]
: consente di scegliere l'impaginazione con un offset e un conteggio numerico. Se non utilizzi questo parametro, il valore predefinito èLIMIT 0 10
, che restituisce al massimo 10 chiavi. DIALECT 2
(facoltativo): specifica il dialetto. L'unico dialetto supportato è il dialetto 2.
Invio del comando
Questo comando restituisce un array o un messaggio di errore. Gli elementi del l'array restituito rappresentano i risultati con la migliore corrispondenza della query. Ogni array presenta quanto segue:
La chiave hash della voce
Un array dei seguenti elementi:
- Valore chiave: [$score_as ] score_value
- Valore distanza
- Nome attributo
- Valore del vettore
Se viene utilizzato
NOCONTENT
, gli elementi array sono costituiti solo dagli ID documento.
Esempio
Per questo esempio, supponiamo che tu abbia creato un indice HNSW nel campo hash
Vec
. Supponi di aver già aggiunto alcune voci Hash contenenti quanto segue:
campi e vorresti trovare il vettore migliore corrispondente a un determinato input
vettoriale.
Nomi dei campi hash:
Vec
: il valore del campo contiene il vettore effettivo.some_hash_key
: alcuni metadati vettoriali associati.
Per eseguire una ricerca, usa il comando FT.SEARCH
:
FT.SEARCH idx "*=>[KNN 3 @vec $BLOB EF_RUNTIME 40 AS score]" PARAMS 2 BLOB "\x12\xa9\xf5\x6c" DIALECT 2
Array restituito:
[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']]
Esempio di Nodejs
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);