Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
FT.SEARCH
Realiza una búsqueda en el índice especificado. Se devuelven las claves que coinciden con la expresión de la consulta.
FT.SEARCH <index-name> <query> [NOCONTENT] [RETURN <token_count> (<field-identifier> [AS <alias>])+] [TIMEOUT timeout] [PARAMS <count> <name> <value> [<name> <value>]] [LIMIT <offset> <count>]
<index> (obligatorio): es el nombre del índice que desea consultar.
<query> (obligatorio): es la cadena de consulta. Vea la información que aparece a continuación.
NOCONTENT (opcional): si está presente, solo se devuelven los nombres de clave resultantes y no se incluyen los valores clave.
TIMEOUT <timeout> (opcional): permite establecer un valor de tiempo de espera para el comando de búsqueda. Debe ser un número entero en milisegundos.
PARAMS <count> <name1> <value1> <name2> <value2> ... (opcional):
countes el número de argumentos, es decir, el doble del número de pares de nombres de valores. Observe la cadena de consulta para obtener información detallada sobre el uso.RETURN <count> <field1> <field2> ... (opcional): es el recuento del número de campos que se va a devolver. Especifica los campos que desea recuperar de los documentos, junto con los alias de los valores devueltos. De forma predeterminada, se devuelven todos los campos a menos que se establezca la opción NOCONTENT, en cuyo caso no se devuelve ningún campo. Si el recuento se establece en 0, se comporta igual que NOCONTENT.
LIMIT: <offset> <count>: permite elegir una parte del resultado. Se omiten las primeras claves <offset> y solo se incluye un máximo de <count> claves. El valor predeterminado es LIMIT 0 10, que devuelve como máximo 10 claves.
PARAMS: dos veces la cantidad de pares de valores clave. Se puede hacer referencia a los key/value pares de parámetros desde la expresión de consulta. Para obtener más información, consulte Expresión de consulta de búsqueda vectorial.
DIALECT: <dialect> (opcional): especifica el dialecto. El único dialecto admitido es el 2.
RESPONSE
El comando devuelve una matriz si tiene éxito o se trata de un error.
En caso de éxito, la primera entrada de la matriz de respuesta representa el recuento de claves coincidentes, seguida de una entrada de matriz por cada clave coincidente. Tenga en cuenta que si se especifica la opción LIMIT, solo controlará el número de claves devueltas y no afectará al valor de la primera entrada.
Cuando se especifica NOCONTENT, cada entrada de la respuesta solo contiene el nombre clave coincidente. De lo contrario, cada entrada incluye el nombre clave coincidente, seguido de una matriz de los campos devueltos. Los campos de resultados de una clave constan de un conjunto de name/value pares. El primer name/value par corresponde a la distancia calculada. El nombre de este par se construye a partir del nombre del campo vectorial al que se añade “__” delante y “_score” detrás. El valor es la distancia calculada. Los name/value pares restantes son los miembros y los valores de la clave controlados por la RETURN cláusula.
La cadena de consulta se ajusta a la siguiente sintaxis:
<filtering>=>[ KNN <K> @<vector_field_name> $<vector_parameter_name> <query-modifiers> ]
Donde:
<filtering>: es un * o una expresión de filtro. Un asterisco (*) significa que no se filtra y, por lo tanto, se buscan todos los vectores del índice. Se puede proporcionar una expresión de filtro para designar un subconjunto de los vectores que se van a buscar.
<vector_field_name>: es el nombre de un campo vectorial dentro del índice especificado.
<K>: es el número de vectores vecinos más cercanos que se va a devolver.
<vector_parameter_name>: es un nombre PARAM cuyo valor correspondiente proporciona el vector de consulta para el algoritmo KNN. Tenga en cuenta que este parámetro debe codificarse como punto flotante binario IEEE 754 de 32 bits en formato little-endian.
<query-modifiers>: (Opcional) Una lista de keyword/value pares que modifican esta búsqueda de KNN en particular. Actualmente, se admiten dos palabras clave:
EF_RUNTIME: esta palabra clave va acompañada de un valor entero que anula el valor predeterminado de EF_RUNTIME especificado cuando se creó el índice.
AS: esta palabra clave va acompañada de un valor de cadena que se convierte en el nombre del campo de puntuación del resultado y anula el algoritmo de generación de nombres de campo de puntuación predeterminado.
Expresión de filtro
Una expresión de filtro se crea como una combinación lógica de los operadores de búsqueda numéricos y de etiquetas incluidos entre paréntesis.
Etiqueta
El operador de búsqueda de etiquetas se especifica con una o más cadenas separadas por el carácter |. Una clave satisfará al operador de búsqueda de etiquetas si el campo indicado contiene alguna de las cadenas especificadas.
@<field_name>:{<tag>} or @<field_name>:{<tag1> | <tag2>} or @<field_name>:{<tag1> | <tag2> | ...}
Por ejemplo, la siguiente consulta devolverá los documentos de color azul O negro O verde.
@color:{blue | black | green}
En otro ejemplo, la siguiente consulta devolverá documentos que contengan “hello world” o “hello universe”.
@description:{hello world | hello universe}
Rango numérico
El operador de rango numérico permite filtrar las consultas para que solo devuelvan valores que se encuentren entre un valor inicial y un valor final determinados. Se admiten consultas de rango inclusivas y exclusivas. Para realizar comparaciones relacionales sencillas, se puede usar +inf o -inf con una consulta de rango. La sintaxis de una búsqueda por rango es la siguiente:
@<field_name>:[ [(] <bound> [(] <bound>]
...donde <bound> es un número o +inf o -inf. Los límites sin un padre abierto principal son inclusivos, mientras que los límites con el padre abierto principal son exclusivos.
Utilice la siguiente tabla como guía para asignar expresiones matemáticas a las consultas de filtrado:
min <= field <= max @field:[min max] min < field <= max @field:[(min max] min <= field < max @field:[min (max] min < field < max @field:[(min (max] field >= min @field:[min +inf] field > min @field:[(min +inf] field <= max @field:[-inf max] field < max @field:[-inf (max] field == val @field:[val val]
Logical operators (Operadores lógicos)
Se pueden utilizar varias etiquetas y operadores de búsqueda numérica para crear consultas complejas mediante operadores lógicos.
Y lógico
Para establecer un AND lógico, utilice un espacio entre los predicados. Por ejemplo:
query1 query2 query3
O lógico
Para establecer un OR lógico, utilice un espacio entre los predicados. Por ejemplo:
query1 | query2 | query3
Negación lógica
Se puede negar cualquier consulta anteponiendo el carácter - a cada consulta. Las consultas negativas devuelven todas las entradas que no coinciden con la consulta. Esto también incluye las claves que no tienen el campo.
Por ejemplo, una consulta negativa en @genre:{comedy} devolverá todos los libros que no sean comedia Y todos los libros que no tengan un campo de género.
La siguiente consulta devolverá todos los libros del género “comedy” que no se hayan publicado entre 2015 y 2024 o que no tengan ningún campo de año: @genre:[comedy] -@year:[2015 2024]
Jerarquía de los operadores
Se aplican las reglas típicas de prioridad de los operadores, es decir, NEGATE es la prioridad más alta, seguida de la lógica AND y, a continuación, la lógica OR con la prioridad más baja. Para invalidar las reglas de prioridad predeterminadas, puede utilizar paréntesis.
Ejemplos de operadores lógicos combinados
Los operadores lógicos se pueden combinar para formar expresiones de filtro complejas.
La siguiente consulta devolverá todos los libros del género “comedy” o “horror” (AND) publicados entre 2015 y 2024: @genre:[comedy|horror] @year:[2015 2024].
La siguiente consulta devolverá todos los libros del género “comedy” o “horror” (OR) publicados entre 2015 y 2024: @genre:[comedy|horror] | @year:[2015 2024].
La siguiente consulta devolverá todos los libros que no tengan ningún campo de género o que tengan un campo de género distinto de “comedy” y que se hayan publicado entre 2015 y 2024: -@genre:[comedy] @year:[2015 2024]