Consultar um índice - Amazon Kendra

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

Consultar um índice

Ao pesquisar seu índice, Amazon Kendra usa todas as informações fornecidas sobre seus documentos para determinar os documentos mais relevantes para os termos de pesquisa inseridos. Alguns dos itens Amazon Kendra considerados são:

  • O texto ou o corpo do documento.

  • O título do documento.

  • Campos de texto personalizados que você marcou como pesquisáveis.

  • O campo de data que você indicou deve ser usado para determinar a “atualização” de um documento.

  • Qualquer outro campo que possa fornecer informações relevantes.

Amazon Kendra também pode filtrar a resposta com base em qualquer filtro de campo/atributo que você possa ter definido para a pesquisa. Por exemplo, se tiver um campo personalizado chamado “departamento”, poderá filtrar a resposta para retornar somente documentos de um departamento chamado “jurídico”. Para obter mais informações, consulte Campos ou atributos personalizados.

Os resultados da pesquisa retornados são classificados pela relevância que Amazon Kendra determina cada documento. Os resultados são paginados para que você possa mostrar uma página por vez para o usuário.

Para pesquisar documentos com os quais você indexou Amazon Lex, use Amazon Kendra a AMAZON. KendraSearchIntent. Para ver um exemplo de configuração Amazon Kendra com Amazon Lex, consulte Criação de um bot de perguntas frequentes para um Amazon Kendra índice.

O exemplo a seguir mostra como pesquisar um índice. Amazon Kendra determina o tipo de resultado da pesquisa (resposta, documento, pergunta-resposta) que é mais adequado para a consulta. Você não pode configurar Amazon Kendra para retornar um tipo específico de resposta de pesquisa (resposta, documento, pergunta-resposta) a uma consulta.

Para obter informações sobre as respostas de consulta, consulte Respostas de consulta e tipos de resposta.

Pré-requisitos

Antes de usar a API de consulta para consultar um índice:

  • Configure as permissões necessárias para um índice e conecte-se à sua fonte de dados ou carregue seus documentos em lote. Para obter mais informações, consulte Funções do IAM. Use o nome de recurso da Amazon da função ao chamar a API para criar um conector de índice e fonte de dados ou fazer upload em lote de documentos.

  • Configure o AWS Command Line Interface, um SDK ou acesse o Amazon Kendra console. Para obter mais informações, consulte Configurar Amazon Kendra.

  • Crie um índice e conecte-se a uma fonte de dados de documentos ou faça upload de documentos em lote. Para obter mais informações, consulte Criar um índice e Criar de um conector de fonte de dados.

Pesquisar um índice (console)

Você pode usar o Amazon Kendra console para pesquisar e testar seu índice. Faça consultas e visualize os resultados.

Para pesquisar um índice com o console
  1. Faça login no AWS Management Console e abra o Amazon Kendra console em http://console.aws.amazon.com/kendra/.

  2. No painel de navegação, escolha Índices.

  3. Escolha seu índice.

  4. No menu de navegação, escolha a opção de pesquisar no índice.

  5. Na caixa de texto Filtro, insira uma consulta e, depois, pressione Enter.

  6. Amazon Kendra retorna os resultados da pesquisa.

Você também poderá obter o ID da consulta para a pesquisa selecionando o ícone de lâmpada no painel lateral.

Pesquisar um índice (SDK)

Para pesquisar um índice com Python ou Java
  • O exemplo a seguir pesquisa um índice. Altere o valor de query para sua consulta de pesquisa index_id e/ou indexId para o identificador do índice que você deseja pesquisar.

    Você também poderá obter o ID da consulta para a pesquisa como parte dos elementos de resposta ao chamar a API de consulta.

    Python
    import boto3 import pprint kendra = boto3.client("kendra") # Provide the index ID index_id = "index-id" # Provide the query text query = "query text" response = kendra.query( QueryText = query, IndexId = index_id) print("\nSearch results for query: " + query + "\n") for query_result in response["ResultItems"]: print("-------------------") print("Type: " + str(query_result["Type"])) if query_result["Type"]=="ANSWER" or query_result["Type"]=="QUESTION_ANSWER": answer_text = query_result["DocumentExcerpt"]["Text"] print(answer_text) if query_result["Type"]=="DOCUMENT": if "DocumentTitle" in query_result: document_title = query_result["DocumentTitle"]["Text"] print("Title: " + document_title) document_text = query_result["DocumentExcerpt"]["Text"] print(document_text) print("------------------\n\n")
    Java
    package com.amazonaws.kendra; import software.amazon.awssdk.services.kendra.KendraClient; import software.amazon.awssdk.services.kendra.model.QueryRequest; import software.amazon.awssdk.services.kendra.model.QueryResponse; import software.amazon.awssdk.services.kendra.model.QueryResultItem; public class SearchIndexExample { public static void main(String[] args) { KendraClient kendra = KendraClient.builder().build(); String query = "query text"; String indexId = "index-id"; QueryRequest queryRequest = QueryRequest .builder() .queryText(query) .indexId(indexId) .build(); QueryResponse queryResponse = kendra.query(queryRequest); System.out.println(String.format("\nSearch results for query: %s", query)); for(QueryResultItem item: queryResponse.resultItems()) { System.out.println("----------------------"); System.out.println(String.format("Type: %s", item.type())); switch(item.type()) { case QUESTION_ANSWER: case ANSWER: String answerText = item.documentExcerpt().text(); System.out.println(answerText); break; case DOCUMENT: String documentTitle = item.documentTitle().text(); System.out.println(String.format("Title: %s", documentTitle)); String documentExcerpt = item.documentExcerpt().text(); System.out.println(String.format("Excerpt: %s", documentExcerpt)); break; default: System.out.println(String.format("Unknown query result type: %s", item.type())); } System.out.println("-----------------------\n"); } } }

Pesquisar um índice (Postman)

Você pode usar o Postman para consultar e testar seu Amazon Kendra índice.

Para pesquisar um índice usando o Postman
  1. Crie uma nova coleção no Postman e defina o tipo de solicitação como POST.

  2. Insira o URL do endpoint. Por exemplo, https://kendra.<region>.amazonaws.com.

  3. Selecione a guia Autorização e insira as seguintes informações:

    • Tipo – Selecione a Assinatura da AWS .

    • AccessKey—Insira a chave de acesso gerada ao criar um IAM usuário.

    • SecretKey—Insira a chave secreta gerada ao criar um IAM usuário.

    • AWS Região — Insira a região do seu índice. Por exemplo, Oeste-EUA-2.

    • Nome do serviço – Insira kendra. Isso diferencia maiúsculas de minúsculas, então deve ser minúsculo.

      Atenção

      Se digitar o nome do serviço incorreto ou não usar letras minúsculas, um erro será gerado ao selecionar Enviar para enviar a solicitação: “A credencial deve ter como escopo o serviço correto 'kendra'.”

      Você também deverá verificar se inseriu a chave de acesso e a chave secreta corretas.

  4. Selecione a guia Cabeçalhos e insira as seguintes informações de chave e valor:

    • Chave: X-Amz-Target

      Valor: com.amazonaws.kendra. AWSKendraFrontendService.Consulta

    • Chave: Codificação de conteúdo

      Valor: amz-1.0

  5. Selecione a guia Corpo e faça o seguinte:

    • Escolha o tipo JSON bruto para o corpo da solicitação.

    • Insira um JSON que inclua seu ID de índice e o texto da consulta.

      { "IndexId": "index-id", "QueryText": "enter a query here" }
      Atenção

      Se seu JSON não usar a indentação correta, um erro será gerado: "”. SerializationException Verifique o recuo em seu JSON.

  6. Selecione Enviar (próximo ao canto superior direito).

Pesquisar com sintaxe de consulta avançada

Crie consultas mais específicas do que consultas simples de palavra-chave ou linguagem natural usando sintaxe ou operadores de consulta avançados. Isso inclui intervalos, booleanos, curingas e muito mais. Ao usar operadores, poderá dar mais contexto à sua consulta e refinar ainda mais os resultados da pesquisa.

Amazon Kendra suporta os seguintes operadores.

  • Booleano: lógica para limitar ou ampliar a pesquisa. Por exemplo, limita a pesquisa do amazon AND sports, a pesquisar somente documentos que contenham os dois termos.

  • Parênteses: lê termos de consulta aninhados em ordem de precedência. Por exemplo, (amazon AND sports) NOT rainforest(amazon AND sports) antes NOT rainforest.

  • Intervalos: valores de data ou intervalo numérico. Os intervalos podem ser inclusivos, exclusivos ou ilimitados. Por exemplo, pesquise documentos que foram atualizados pela última vez entre 1º de janeiro de 2020 e 31 de dezembro de 2020, incluindo essas datas.

  • Campos: usa um campo específico para limitar a pesquisa. Por exemplo, pesquisar documentos que tenham “Estados Unidos” no campo “localização”.

  • Curingas: correspondem parcialmente a uma sequência de caracteres de texto. Por exemplo, Cloud* poderia corresponder CloudFormation. Amazon Kendra atualmente só suporta curingas finais.

  • Citações exatas: corresponde exatamente a uma sequência de caracteres de texto. Por exemplo, documentos que contêm o "Amazon Kendra" "pricing".

Use uma combinação de qualquer um dos operadores acima.

Observe que o uso excessivo de operadores ou consultas altamente complexas pode afetar a latência da consulta. Os curingas são algumas das operadoras mais caras em termos de latência. Uma regra geral é que quanto mais termos e operadores você usa, maior o impacto potencial na latência. Outros fatores que afetam a latência incluem o tamanho médio dos documentos indexados, o tamanho do seu índice, qualquer filtragem nos resultados da pesquisa e a carga geral do seu índice. Amazon Kendra

Booleano

Combine ou exclua palavras usando os operadores booleanos AND, OR e NOT.

Veja a seguir exemplos do uso de operadores booleanos.

amazon AND sports

Retorna resultados de pesquisa que contêm os termos “amazon” e “sports”v no texto, como Amazon Prime Video Sports ou outro conteúdo similar.

sports OR recreation

Retorna resultados da pesquisa que contêm os termos “esportes” ou “entretenimento”, ou ambos, no texto.

amazon NOT rainforest

Retorna resultados da pesquisa que contêm o termo “amazônia”, mas não o termo “floresta tropical” no texto. Isso é para pesquisar documentos sobre a empresa Amazon, não sobre a Floresta Amazônica.

Parênteses

Consulte palavras aninhadas em ordem de precedência usando parênteses. Os parênteses indicam Amazon Kendra como uma consulta deve ser lida.

Veja a seguir exemplos do uso de operadores de parênteses.

(amazon AND sports) NOT rainforest

Retorna documentos que contêm os termos “amazônia” e “esportes” no texto, mas não o termo “floresta tropical”. Isso serve para pesquisar vídeos esportivos do Amazon Prime ou outro conteúdo similar, não esportes de aventura na Floresta Amazônica. Os parênteses ajudam a indicar que o amazon AND sports deve ser lido antes de NOT rainforest. A consulta não deve ser lida como amazon AND (sports NOT rainforest).

(amazon AND (sports OR recreation)) NOT rainforest

Retorna documentos que contêm os termos “esportes” ou “entretenimento”, ou ambos, e o termo “amazon”. Mas isso não inclui o termo “floresta tropical”. Isso serve para pesquisar vídeos esportivos ou entretenimentos no Amazon Prime, não esportes de aventura na Floresta Amazônica. Os parênteses ajudam a indicar que os sports OR recreation deve ser lido antes de combinar com 'amazon', que é lido antes de NOT rainforest. A consulta não deve ser lida como amazon AND (sports OR (recreation NOT rainforest)).

Intervalos

Use uma faixa de valores para filtrar os resultados da pesquisa. Você especifica um atributo e os valores do intervalo. Isso pode ser data ou tipo numérico.

Os intervalos de datas devem estar nos seguintes formatos:

  • Epoch

  • YYYY

  • mm-AAAA

  • dd-mm-AAAA

  • dd-mm-AAAA'T'HH

Você também poderá especificar se deseja incluir ou excluir os valores mais baixos e mais altos do intervalo.

Veja a seguir exemplos do uso de operadores de alcance.

_processed_date:>2019-12-31 AND _processed_date:<2021-01-01

Retorna documentos que foram processados em 2020 – maiores que 31 de dezembro de 2019 e menos de 1º de janeiro de 2021.

_processed_date:>=2020-01-01 AND _processed_date:<=2020-12-31

Retorna documentos que foram processados em 2020 – maiores ou iguais a 1º de janeiro de 2020 e menores ou iguais a 31 de dezembro de 2020.

_document_likes:<1

Retorna documentos com zero curtidas ou sem feedback do usuário – menos de 1 curtida.

Especifique se um intervalo deve ser tratado como inclusivo ou exclusivo dos valores de intervalo fornecidos.

Inclusive

_last_updated_at:[2020-01-01 TO 2020-12-31]

Documentos de devolução atualizados pela última vez em 2020, inclusive os dias 1º de dezembro de 2020 e 31 de dezembro de 2020.

Exclusive

_last_updated_at:{2019-12-31 TO 2021-01-01}

Os documentos de devolução foram atualizados pela última vez em 2020, inclusive os dias 31 de dezembro de 2019 e 1º de janeiro de 2021.

Para intervalos ilimitados que não são inclusivos nem exclusivos, basta usar os operadores.< and >. Por exemplo, _last_updated_at:>2019-12-31 AND _last_updated_at:<2021-01-01.

Campos

Limite sua pesquisa para retornar somente documentos que atendam a um valor em um campo específico. O campo pode ser de qualquer tipo.

Veja a seguir exemplos do uso de operadores de contexto em nível de campo.

status:"Incomplete" AND financial_year:2021

Retorna documentos do exercício financeiro de 2021 com o status de incompleto.

(sports OR recreation) AND country:"United States" AND level:"professional"

Retorna documentos que discutem esportes profissionais ou entretenimento nos Estados Unidos.

Curingas

Amplie sua pesquisa para considerar variantes de palavras e frases usando o operador curinga. Isso é útil ao pesquisar variantes de nome. Amazon Kendra atualmente só suporta curingas finais. O número de caracteres de prefixo para um curinga à direita deve ser maior que dois.

Veja a seguir exemplos do uso de operadores curinga.

Cloud*

Retorna documentos que contêm variantes como CloudFormation CloudWatch e.

kendra*aws

Retorna documentos que contêm variantes, como kendra.amazonaws.

kendra*aws*

Retorna documentos que contêm variantes, como kendra.amazonaws.com

Cotações exatas

Use aspas para pesquisar uma correspondência exata de uma parte do texto.

Veja a seguir exemplos do uso de aspas.

"Amazon Kendra" "pricing"

Retorna documentos que contêm a frase do “Amazon Kendra” e o termo “preços”. Os documentos devem conter o “Amazon Kendra” e os “preços” para que os resultados sejam retornados.

"Amazon Kendra" "pricing" cost

Retorna documentos que contêm a frase do “Amazon Kendra” e o termo “preço” e, opcionalmente, o termo “custo”. Os documentos devem conter o “Amazon Kendra” e “preços” para retornar aos resultados, mas podem não necessariamente incluir “custo”.

Sintaxe de consulta inválida

Amazon Kendra emite um aviso se houver problemas com a sintaxe da consulta ou se ela não for suportada atualmente pelo Amazon Kendra. Para obter mais informações, consulte a Documentação da API para avisos de consulta.

As consultas a seguir são exemplos de sintaxe de consulta inválida.

_last_updated_at:<2021-12-32

Data inválida. O dia 32 não existe no calendário gregoriano, que é usado pelo Amazon Kendra.

_view_count:ten

Valor numérico inválido. Os dígitos devem ser usados para representar valores numéricos.

nonExistentField:123

Pesquisa de campo inválida. O campo deve existir para usar a pesquisa de campo.

Product:[A TO D]

Intervalo inválido. Valores numéricos ou datas devem ser usados para intervalos.

OR Hello

Booleano inválido. Os operadores devem ser usados com termos e colocados entre termos.

Pesquisando em idiomas

Pesquise documentos em um idioma com suporte. Você passa o código do idioma no AttributeFilterpara retornar documentos filtrados no idioma escolhido. Digite a consulta em um idioma com suporte.

Se você não especificar um idioma, Amazon Kendra consulta documentos em inglês por padrão. Para obter mais informações sobre os idiomas com suporte, inclusive seus códigos, consulte Adicionar documentos em outros idiomas além do inglês.

Para pesquisar documentos em um idioma com suporte pelo console, selecione seu índice e, em seguida, selecione a opção de pesquisar seu índice no menu de navegação. Escolha o idioma para o qual você deseja devolver os documentos selecionando as configurações de pesquisa e, em seguida, selecionando um idioma no menu suspenso Idioma.

Os exemplos a seguir mostram como pesquisar documentos em espanhol.

Para pesquisar um índice em espanhol no console
  1. Faça login no AWS Management Console e abra o Amazon Kendra console em http://console.aws.amazon.com/kendra/.

  2. No menu de navegação, escolha Índices e escolha seu índice.

  3. No menu de navegação, escolha a opção de pesquisar no índice.

  4. Nas configurações de pesquisa, selecione o menu suspenso Idiomas e escolha Espanhol.

  5. Insira uma consulta na caixa de texto e pressione enter.

  6. Amazon Kendra retorna os resultados da pesquisa em espanhol.

Para pesquisar um índice em espanhol usando a CLI, Python ou Java
  • O exemplo a seguir pesquisa um índice em espanhol. Altere o valor searchString da sua consulta de pesquisa e o valor indexID do identificador do índice a ser pesquisado. O código do idioma para o espanhol é es. É possível substituí-lo pelo seu próprio código de idioma.

    CLI
    { "EqualsTo":{ "Key": "_language_code", "Value": { "StringValue": "es" } } }
    Python
    import boto3 import pprint kendra = boto3.client("kendra") # Provide the index ID index_id = "index-id" # Provide the query text query = "search-string" # Includes the index ID, query text, and language attribute filter response = kendra.query( QueryText = query, IndexId = index_id, AttributeFilter = { "EqualsTo": { "Key": "_language_code", "Value": { "StringValue": "es" } } }) print ("\nSearch results|Resultados de la búsqueda: " + query + "\n") for query_result in response["ResultItems"]: print("-------------------") print("Type: " + str(query_result["Type"])) if query_result["Type"]=="ANSWER" or query_result["Type"]=="QUESTION_ANSWER": answer_text = query_result["DocumentExcerpt"]["Text"] print(answer_text) if query_result["Type"]=="DOCUMENT": if "DocumentTitle" in query_result: document_title = query_result["DocumentTitle"]["Text"] print("Title: " + document_title) document_text = query_result["DocumentExcerpt"]["Text"] print(document_text) print("------------------\n\n")
    Java
    package com.amazonaws.kendra; import software.amazon.awssdk.services.kendra.KendraClient; import software.amazon.awssdk.services.kendra.model.QueryRequest; import software.amazon.awssdk.services.kendra.model.QueryResponse; import software.amazon.awssdk.services.kendra.model.QueryResultItem; public class SearchIndexExample { public static void main(String[] args) { KendraClient kendra = KendraClient.builder().build(); String query = "searchString"; String indexId = "indexID"; QueryRequest queryRequest = QueryRequest.builder() .queryText(query) .indexId(indexId) .attributeFilter( AttributeFilter.builder() .withEqualsTo( DocumentAttribute.builder() .withKey("_language_code") .withValue("es") .build()) .build()) .build(); QueryResponse queryResponse = kendra.query(queryRequest); System.out.println(String.format("\nSearch results| Resultados de la búsqueda: %s", query)); for(QueryResultItem item: queryResponse.resultItems()) { System.out.println("----------------------"); System.out.println(String.format("Type: %s", item.type())); switch(item.type()) { case QUESTION_ANSWER: case ANSWER: String answerText = item.documentExcerpt().text(); System.out.println(answerText); break; case DOCUMENT: String documentTitle = item.documentTitle().text(); System.out.println(String.format("Title: %s", documentTitle)); String documentExcerpt = item.documentExcerpt().text(); System.out.println(String.format("Excerpt: %s", documentExcerpt)); break; default: System.out.println(String.format("Unknown query result type: %s", item.type())); } System.out.println("-----------------------\n"); } } }