As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
FT.SEARCH
Executa uma pesquisa no índice especificado. As chaves que correspondem à expressão da consulta são retornadas.
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> (obrigatório): o nome do índice que você deseja consultar.
<query> (obrigatório): a string de consulta, veja abaixo para obter detalhes.
NOCONTENT (opcional): quando presente, somente os nomes de chave resultantes são retornados, nenhum valor de chave é incluído.
TIMEOUT <timeout> (opcional): permite definir um valor de tempo limite para o comando de pesquisa. Deve ser um número inteiro em milissegundos.
PARAMS <count> <name1> <value1> <name2> <value2> ... (opcional):
counté do número de argumentos, ou seja, duas vezes o número de pares de nomes de valores. Consulte a string de consulta para obter detalhes de uso.RETURN <count> <field1> <field2> ... (opcional): contagem é o número de campos a serem retornados. Especifica os campos que você deseja recuperar dos seus documentos, junto com quaisquer aliases para os valores retornados. Por padrão, todos os campos são retornados, a menos que a opção NOCONTENT seja definida. Nesse caso, nenhum campo será retornado. Se a contagem for definida como 0, ela se comportará da mesma forma que NOCONTENT.
LIMIT <offset><count>: permite escolher uma parte do resultado. As primeiras <offset> chaves são ignoradas e apenas um máximo de <count> chaves é incluído. O padrão é LIMIT 0 10, que retorna no máximo 10 chaves.
PARAMS: duas vezes o número de pares de valores-chave. Os key/value pares de parâmetros podem ser referenciados de dentro da expressão de consulta. Para obter mais informações, consulte Expressão de consulta de pesquisa vetorial.
DIALECT: <dialect> (opcional): especifica seu dialeto. O único dialeto compatível é 2.
RESPONSE
O comando retorna uma matriz em caso de sucesso ou um erro.
Em caso de sucesso, a primeira entrada na matriz de resposta representa a contagem de chaves correspondentes, seguida por uma entrada de matriz para cada chave correspondente. Observe que, se a opção LIMIT for especificada, ela controlará apenas o número de chaves retornadas e não afetará o valor da primeira entrada.
Quando NOCONTENT é especificado, cada entrada na resposta contém somente o nome de chave correspondente. Caso contrário, cada entrada inclui o nome de chave correspondente, seguido por uma matriz dos campos retornados. Os campos de resultado de uma chave consistem em um conjunto de name/value pares. O primeiro name/value par é para a distância calculada. O nome desse par é construído a partir do nome do campo vetorial prefixado com “__” e anexado com “_score” e o valor é a distância calculada. Os name/value pares restantes são os membros e valores da chave, conforme controlado pela RETURN cláusula.
A string de consulta está em conformidade com esta sintaxe:
<filtering>=>[ KNN <K> @<vector_field_name> $<vector_parameter_name> <query-modifiers> ]
Em que:
<filtering>: é um * ou uma expressão de filtro. Um * indica que não há filtragem e, portanto, todos os vetores dentro do índice são pesquisados. Uma expressão de filtro pode ser fornecida para designar um subconjunto dos vetores a serem pesquisados.
<vector_field_name>: o nome de um campo vetorial dentro do índice especificado.
<K>: o número de vetores vizinhos mais próximos a serem retornados.
<vector_parameter_name>: um nome de PARAM cujo valor correspondente fornece o vetor de consulta para o algoritmo KNN. Observe que esse parâmetro deve ser codificado como um ponto flutuante binário IEEE 754 de 32 bits no formato little-endian.
<query-modifiers>: (Opcional) Uma lista de keyword/value pares que modificam essa pesquisa KNN específica. Atualmente, há compatibilidade para duas palavras-chave:
EF_RUNTIME: essa palavra-chave é acompanhada por um valor inteiro que substitui o valor padrão de EF_RUNTIME especificado quando o índice foi criado.
AS: essa palavra-chave é acompanhada por um valor de string que se torna o nome do campo de pontuação no resultado, substituindo o algoritmo padrão de geração do nome do campo de pontuação.
Expressão de filtro
Uma expressão de filtro é construída como uma combinação lógica dos operadores de pesquisa de tags e numéricos contidos entre parênteses.
Tag
O operador de pesquisa de tags é especificado com uma ou mais cadeias de caracteres separadas pelo caractere |. Uma chave satisfará o operador de pesquisa de tags se o campo indicado contiver qualquer uma das cadeias de caracteres especificadas.
@<field_name>:{<tag>} or @<field_name>:{<tag1> | <tag2>} or @<field_name>:{<tag1> | <tag2> | ...}
Por exemplo, a consulta a seguir retornará documentos com a cor azul OU preta OU verde.
@color:{blue | black | green}
Como outro exemplo, a consulta a seguir retornará documentos contendo “hello world” ou “hello universe”.
@description:{hello world | hello universe}
Intervalo numérico
O operador de intervalo numérico permite filtrar consultas para retornar somente valores que estejam entre um determinado valor inicial e final. Tanto consultas de intervalo inclusivas quanto exclusivas são suportadas. Para comparações relacionais simples, +inf, -inf pode ser usado com uma consulta de intervalo. A sintaxe para um operador de pesquisa de intervalo é:
@<field_name>:[ [(] <bound> [(] <bound>]
... em que <bound> é um número +inf ou -inf. Os limites sem um pai aberto principal são inclusivos, enquanto os limites com o pai aberto principal são exclusivos.
Use a tabela a seguir como guia para mapear expressões matemáticas para filtrar consultas:
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]
Operadores lógicos
Várias tags e operadores de pesquisa numérica podem ser usados para criar consultas complexas usando operadores lógicos.
Lógico AND
Para definir um AND lógico, use um espaço entre os predicados. Por exemplo:
query1 query2 query3
OR lógico
Para definir um OR lógico, use um espaço entre os predicados. Por exemplo:
query1 | query2 | query3
Negação lógica
Qualquer consulta pode ser negada colocando o caractere - antes de cada consulta. As consultas negativas retornam todas as entradas que não correspondem à consulta. Isso também inclui chaves que não têm o campo.
Por exemplo, uma consulta negativa em @genre:{comedy} retornará todos os livros que não são de comédia E todos os livros que não têm um campo de gênero.
A consulta a seguir retornará todos os livros do gênero “comédia” que não foram publicados entre 2015 e 2024 ou que não têm campo de ano: @genre:[comedy] - @year:[2015 2024]
Precedência do operador
As regras típicas de precedência do operador se aplicam, ou seja, NEGATE lógico é a prioridade mais alta, seguido pelo AND lógico e depois OR lógico com a prioridade mais baixa. Os parênteses podem ser usados para substituir a precedência padrão.
Exemplos de combinação de operadores lógicos
Os operadores lógicos podem ser combinados para formar expressões de filtro complexas.
A consulta a seguir retornará todos os livros do gênero “comédia” ou “terror” (AND) publicados entre 2015 e 2024: @genre:[comedy|horror] @year:[2015 2024]
A consulta a seguir retornará todos os livros do gênero “comédia” ou “terror” (OR) publicados entre 2015 e 2024: @genre:[comedy|horror] | @year:[2015 2024]
A consulta a seguir retornará todos os livros que não têm um campo de gênero ou têm um campo de gênero diferente de “comédia”, publicados entre 2015 e 2024: -@genre:[comedy] @year:[2015 2024]