FT.SEARCH
busca en el índice con la consulta proporcionada y muestra los valores especificados.
Para obtener detalles sobre la sintaxis de consulta, revisa Sintaxis de consultas.
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 seráLIMIT 0 10
. que devuelve como máximo 10 claves.DIALECT 2
(opcional): Especifica el dialecto. El único dialecto admitido es el dialecto 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 documento.
Ejemplo
Para este ejemplo, supongamos que creaste un índice HNSW en el campo hash
Vec
Supongamos que ya agregaste algunas entradas hash que contienen lo siguiente
nombres de campos y quieres encontrar el mejor vector que coincida con una entrada determinada
.
Nombres de campos de hash:
Vec
: El valor del campo contiene el vector real.some_hash_key
: Algunos metadatos vectoriales 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);