FT.SEARCH
busca en el índice con la consulta proporcionada y muestra los valores especificados.
Para obtener detalles sobre la sintaxis de consulta, consulta Sintaxis de consulta.
Sintaxis
FT.SEARCH index query [NOCONTENT] [TIMEOUT timeout] [PARAMS nargs name value [ name value ...]] [LIMIT offset num] DIALECT 2
index
(obligatorio): Es el índice que deseas consultar.query
(obligatorio): Esta es tu consulta. Para obtener detalles sobre la sintaxis de consulta, consulta Sintaxis de consulta.NOCONTENT
(opcional): Muestra solo los IDs de los documentos y excluye el contenido.TIMEOUT
(opcional): Te permite establecer un valor de tiempo de espera para el comando de búsqueda.PARAMS
(opcional): Es la cantidad de pares clave-valor multiplicada por dos.[LIMIT offset num]
(opcional): Te permite elegir la paginación con un desplazamiento y un recuento de números. Si no usas este parámetro, el valor predeterminado esLIMIT 0 10
, que muestra como máximo 10 claves.DIALECT 2
(opcional): Especifica el dialecto. El único dialecto compatible es el 2.
Comando de retorno
Este comando muestra un array o un mensaje de error. Los elementos del array que se muestra representan los resultados de la consulta que mejor coinciden. Cada elemento del array tiene lo siguiente:
La clave de hash de entrada
Un array de lo siguiente:
- Valor clave: [$score_as ] score_value
- Valor de distancia
- Nombre del atributo
- Valor vectorial
Si se usa
NOCONTENT
, los elementos del array consisten solo en los IDs de los documentos.
Ejemplo
En este ejemplo, supongamos que creaste un índice de HNSW en el campo de hash Vec
. Supongamos que ya agregaste algunas entradas de hash que contienen los siguientes nombres de campo y deseas encontrar el vector que mejor coincida con un vector de entrada determinado.
Nombres de campos de hash:
Vec
: El valor del campo contiene el vector real.some_hash_key
: Algunos metadatos de vectores asociados.
Para ejecutar una búsqueda, usa el 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 de devolución:
[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']]
Ejemplo de 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);