

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
<a name="vector-search-commands-ft.search"></a>

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](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).
+ 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 “\$1\$1” e anexado com “\$1score” 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 \$1 ou uma expressão de filtro. Um \$1 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\$1field\$1name>: o nome de um campo vetorial dentro do índice especificado.
+ <K>: o número de vetores vizinhos mais próximos a serem retornados.
+ <vector\$1parameter\$1name>: 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\$1RUNTIME: essa palavra-chave é acompanhada por um valor inteiro que substitui o valor padrão de EF\$1RUNTIME 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 \$1. 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, \$1inf, -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 \$1inf 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:\$1comedy\$1 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]`