

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á.

# Parâmetros de pesquisa de texto completo do Neptune
<a name="full-text-search-parameters"></a>

O Amazon Neptune usa os seguintes parâmetros para especificar as consultas de texto completo do OpenSearch no Gremlin e no SPARQL:
+ **`queryType`**: (*obrigatório*) o tipo de consulta do OpenSearch. (Para obter uma lista dos tipos de consulta, consulte a [documentação do OpenSearch](https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html)). O Neptune é compatível com os seguintes tipos de consulta do OpenSearch:
  + [simple\$1query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html): exibe documentos baseados em uma string de consulta fornecida, usando um analisador com uma sintaxe Lucene limitada, mas tolerante a falhas. Este é o tipo de consulta padrão.

    Esta consulta usa uma sintaxe simples para analisar e dividir a string de consulta fornecida em termos baseados em operadores especiais. A consulta analisa todos os termos de forma independente antes de retornar os documentos correspondentes.

    Embora a sintaxe seja mais limitada que a consulta `query_string`, a consulta `simple_query_string` não retorna erros para sintaxe inválida. Em vez disso, ela ignora as partes inválidas da string de consulta.
  + [match](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html): a consulta `match` é a consulta padrão para realizar uma pesquisa de texto completo, incluindo opções para correspondência difusa.
  + [prefix](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html): exibe documentos que contêm um prefixo específico em um campo fornecido.
  + [fuzzy](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html): exibe documentos que contêm termos semelhantes ao termo de pesquisa, conforme medido por uma distância de edição de Levenshtein.

    Uma distância de edição é o número de alterações de um caractere necessárias para transformar um termo em outro. Essas alterações podem incluir:
    + Mudar um caractere (caixa para faixa).
    + Remover um caractere (preto para reto).
    + Inserir um caractere (acender para ascender).
    + Transposição de dois caracteres adjacentes (bolsa para bolas).

    Para encontrar termos semelhantes, a consulta difusa cria um conjunto de todas as possíveis variações e expansões do termo de pesquisa dentro de uma distância de edição especificada e retorna correspondências exatas para cada uma dessas variantes.
  + [term](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html): exibe documentos que contêm uma correspondência exata de um termo definido em um dos campos especificados.

    Você pode usar a consulta `term` para encontrar documentos baseados em um valor preciso, como preço, ID de produto ou nome de usuário.
**Atenção**  
Evite usar a consulta de termo para campos de texto. Por padrão, o OpenSearch altera os valores de campos de texto como parte da análise, o que pode dificultar a localização de correspondências exatas para valores de campos de texto.  
Para pesquisar valores de campo de texto, use a consulta de correspondência.
  + [query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html): exibe documentos baseados em uma string de consulta fornecida, usando um analisador com uma sintaxe estrita (sintaxe Lucene).

    Esta consulta usa uma sintaxe para analisar e dividir a string de consulta fornecida com base em operadores, como E ou NÃO. A consulta analisa cada texto dividido de forma independente antes de retornar os documentos correspondentes.

    Você pode usar a consulta `query_string` para criar uma pesquisa complexa que inclui caracteres curinga, pesquisas em vários campos, entre outros. Embora seja versátil, a consulta é restrita e retorna um erro se a string da consulta incluir uma sintaxe inválida.
**Atenção**  
Como ela retorna um erro para uma sintaxe inválida, não recomendamos o uso da consulta `query_string` para caixas de pesquisa.  
Se você não precisar oferecer suporte para a sintaxe de consulta, considere usar a consulta `match`. Se você precisar dos recursos de uma sintaxe de consulta, use a consulta `simple_query_string`, que é menos estrita.
+ **`field`**: o campo no OpenSearch no qual executar a pesquisa. Isto pode ser omitido somente se o `queryType` permitir (assim como o `simple_query_string` e o `query_string`), nesse caso, a pesquisa é realizada em todos os campos. No Gremlin, está implícito.

  É possível especificar múltiplos campos se a consulta permitir, assim como `simple_query_string` e `query_string`.
+ **`query`**: (*obrigatório*) a consulta a ser executada no OpenSearch. O conteúdo deste campo pode variar de acordo com o queryType. Diferentes queryTypes aceitam sintaxes diferentes, como, por exemplo, o `Regexp`. No Gremlin, o `query` está implícito.
+ **`maxResults`**: o número máximo de resultados a serem exibidos. O padrão é a configuração `index.max_result_window` do OpenSearch, que é padronizada como dez mil. O parâmetro `maxResults` pode especificar qualquer número inferior a esse.
**Importante**  
Se você definir `maxResults` como um valor maior que o valor `index.max_result_window` do OpenSearch e tentar recuperar mais de resultados `index.max_result_window`, o OpenSearch exibirá um erro `Result window is too large`. No entanto, o Neptune processa o erro corretamente sem propagá-lo. Lembre-se disso se estiver tentando buscar mais do que `index.max_result_window` resultados.
+ **`minScore`**: a pontuação mínima que um resultado de pesquisa pode ter para ser exibido. Consulte a [documentação de relevância do OpenSearch](https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html) para obter uma explicação da pontuação do resultado.
+ **`batchSize`**: o Neptune sempre obtém dados em lotes (o tamanho de lote padrão é cem). É possível usar esse parâmetro para ajustar o desempenho. O tamanho do lote não pode exceder a configuração `index.max_result_window` do OpenSearch, que é predefinida como dez mil.
+ **`sortBy`**: um parâmetro opcional que permite classificar os resultados exibidos pelo OpenSearch por um dos seguintes itens:
  + *Um campo de string específico no documento* –  

    Por exemplo, em uma consulta SPARQL, é possível especificar:

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name .
    ```

    Em uma consulta Gremlin, é possível especificar:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name')
    ```
  + *Um campo que não seja de string específico (`long`, `double` etc.) no documento* –  

    Observe que, ao classificar em um campo que não seja de string, você precisa acrescentar `.value` ao nome do campo para diferenciá-lo de um campo de string.

    Por exemplo, em uma consulta SPARQL, é possível especificar:

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name.value .
    ```

    Em uma consulta Gremlin, é possível especificar:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name.value')
    ```
  + `score`: classificar por pontuação de correspondência (padrão).

    Se o parâmetro `sortOrder` estiver presente, mas `sortBy` não estiver presente, os resultados serão classificados por `score` na ordem especificada por `sortOrder`.
  + `id`: classificar por ID, o que significa o URI de assunto do SPARQL ou o ID de borda ou vértice do Gremlin.

    Por exemplo, em uma consulta SPARQL, é possível especificar:

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_id' .
    ```

    Em uma consulta Gremlin, é possível especificar:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_id')
    ```
  + `label`: ordenar por rótulo.

    Por exemplo, em uma consulta SPARQL, é possível especificar:

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_type' .
    ```

    Em uma consulta Gremlin, é possível especificar:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_type')
    ```
  + `doc_type`: classificar por tipo de documento (ou seja, SPARQL ou Gremlin).

    Por exemplo, em uma consulta SPARQL, é possível especificar:

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.document_type' .
    ```

    Em uma consulta Gremlin, é possível especificar:

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.document_type')
    ```

  Por padrão, os resultados do OpenSearch não são classificados e a ordem não é determinística, o que significa que a mesma consulta pode exibir itens em uma ordem diferente a cada execução. Por esse motivo, se o resultado definido for maior que `max_result_window`, um subconjunto diferente dos resultados totais pode ser retornado a cada execução. No entanto, ao classificar você pode tornar os resultados de execuções diferentes mais comparáveis diretamente.

  Se nenhum parâmetro `sortOrder` acompanhar o `sortBy`, será usada a ordem decrescente (`DESC`) do maior para o menor.
+ **`sortOrder`**: um parâmetro opcional que permite especificar se os resultados do OpenSearch são classificados do menor para o maior ou do maior para o menor (padrão):

****
  + `ASC`: ordem crescente, do menor para o maior.
  + `DESC`: ordem decrescente, do maior para o menor.

    Este é o valor padrão usado quando o parâmetro `sortBy` for apresentado, mas nenhum `sortOrder` tiver sido especificado.

  Se nem `sortBy` nem `sortOrder` estiverem presentes, os resultados do OpenSearch não serão classificados por padrão.