Pesquisa de texto completo

A vida de uma consulta de pesquisa de texto completo

Este artigo técnico mostra a vida de uma consulta de pesquisa de texto completo em um sistema Couchbase distribuído, desde a origem de um cliente até o recebimento de uma resposta.

Antes de mergulhar no mundo do servidor, um pouco sobre o cliente - aqui está onde ou o que ele poderia ser ...

  • em um sistema em que o usuário tem um aplicativo/programa que usa um dos SDKs do Couchbase ou simplesmente uma solicitação curl/HTTP (REST) digitada para se conectar a um cluster distribuído do Couchbase
  • a interface de usuário de pesquisa do Couchbase em um dos servidores do cluster
  • o workbench de consulta do Couchbase em um dos servidores do cluster
  • a interface de linha de comando de consulta do Couchbase em um dos servidores do cluster

Acho que este é o momento certo para saber (se você ainda não sabe) que o Couchbase hospeda um serviço distribuído de pesquisa de texto completo que requer configuração. Isso significa que, se você configurar um índice do Full Text Search em um desses clusters para ingerir dados de um bucket do Couchbase, terá permissão para particionar o índice entre vários servidores.

Se você não estiver familiarizado com a configuração de um índice de pesquisa de texto completo no Couchbase, talvez seja uma boa hora para dar uma olhada em nossa documentação aqui. Para obter detalhes sobre os vários tipos de consultas que o serviço de pesquisa suporta, clique em aqui.

Um usuário avançado provavelmente dividiria seu índice em partições suficientes para que os dados indexados fossem distribuídos uniformemente (mais ou menos) pelo cluster de servidores que hospedam o serviço de "pesquisa". Eles também NÃO precisarão se preocupar com a pesquisa nos dados distribuídos quando fizerem uma consulta ao sistema - os serviços de pesquisa se comunicarão dentro do cluster para reunir uma resposta completa para o usuário.

Antes de entrarmos em detalhes, aqui está um GIF que ilustra um usuário que recebe uma resposta depois de enviar uma solicitação (consulta) de um cliente. Seu cluster do Couchbase tem um índice de pesquisa de texto completo que é particionado em seis peças sobre três servidores que hospedam o serviço de pesquisa.

Uma consulta de pesquisa de texto completo, uma vez criada no cliente, pode ser direcionada a qualquer servidor no cluster do Couchbase que hospeda o serviço de pesquisa. Aqui estão os estágios pelos quais ela passa...

  1. O servidor para o qual o cliente direciona a solicitação de pesquisa assume a função do orquestrador ou do nó de coordenação assim que receber a solicitação externa.
  1. O nó de coordenação primeiro procura o índice (certificando-se de que ele existe).
  1. O nó de coordenação obtém o "plano" com o qual o índice foi implantado. O plano contém detalhes sobre em quantas partições o índice foi dividido e todas as informações dos servidores onde qualquer uma dessas partições reside.
  1. O nó de coordenação define uma lista exclusiva de servidores para os quais ele precisa enviar uma solicitação "interna". Um servidor no cluster do Couchbase é elegível se e somente se ele hospedar uma partição pertencente ao índice em consideração.
  1. Depois que as solicitações internas forem despachadas pelo nó de coordenação para cada um dos servidores, ele aguardará o retorno deles. Simultaneamente, se alguma das partições do índice estiver residente no nó de coordenação, as solicitações de pesquisa também serão enviadas para cada uma dessas partições (vinculadas ao disco).
  1. Os servidores do cluster que receberem a solicitação "interna" do nó de coordenação a encaminharão para cada uma das partições de índice que hospedam (vinculadas ao disco).
  1. Solicitações de pesquisa separadas que são enviadas simultaneamente a todas as partições de índice residentes em um servidor, e o servidor aguarda o retorno delas.
  1. Depois que o servidor recebe o retorno de todas as partições que hospeda, ele mescla os resultados obtidos de cada uma das partições antes de empacotá-los em uma resposta e enviá-la de volta ao nó de coordenação.
  1. Em resumo, o nó de coordenação aguarda as respostas de ...
    • cada uma das partições de índice residentes no nó
    • cada um dos servidores do cluster para os quais ele enviou a solicitação interna
  1. Depois que todos os resultados das partições de índice local e das partições de índice remoto são obtidos, o nó de coordenação mescla todos eles, empacota-os em uma resposta e os envia de volta ao cliente de origem da solicitação.

Essa sequência de etapas é o que nós, aqui no Couchbase, chamamos de dispersão-coleta operação.

A solicitação de pesquisa que o usuário precisa montar no cliente encapsula a consulta de pesquisa e, opcionalmente, uma série de filtros para paginação, classificação, pontuação etc. Clique em aqui para obter documentação sobre as configurações de solicitação de pesquisa e as opções disponíveis. Aqui está um exemplo de solicitação de pesquisa no índice viagens usando curl ...

Assim como a solicitação de pesquisa, a resposta da pesquisa também está no formato JSON. Aqui está um exemplo de resposta que mostra os três principais resultados agregados de seis partições de índice para a solicitação acima ...

Quanto ao conteúdo da resposta da pesquisa ...

  • O "statusO campo " contém ...
    • o "total" número de partições do índice das quais os resultados foram obtidos e mesclados
    • o número dessas partições que eram "bem-sucedido" ao responder à solicitação
    • o número dessas partições que "falhou" para responder à solicitação por qualquer motivo
  • O "solicitaçãoO campo " contém a solicitação de pesquisa (consulta) que foi recebida do cliente.
  • sucessos" é uma matriz de objetos, em que cada objeto é essencialmente um resultado ou uma ocorrência de documento.
    • O "índiceO campo " em cada objeto é a partição do índice em que o documento reside
    • O "id" é a chave do documento inserida no bucket do couchbase
    • O "pontuação" é a relevância do documento para os parâmetros de pesquisa, calculada usando o tf-idf algoritmo.
    • O "classificar" indica qual campo foi usado para ordenar os resultados obtidos.
  • total_hits" é o número total de resultados disponíveis para a solicitação de pesquisa (consulta).
  • pontuação máxima" é a pontuação máxima de tf-idf (relevância) para qualquer uma das ocorrências do documento.
  • pegou" é o tempo, em nanossegundos, que o nó de coordenação leva para processar a solicitação e enviar a resposta agregada.
  • facetas" contém conteúdo relevante se a consulta de pesquisa solicitar qualquer faceta/informação agregada.

Além disso, não foram incluídos nessa resposta de pesquisa...

  • Se alguma das partições de índice não conseguir responder à solicitação devido a algum erro, uma mensagem separada "erros" será incluído, indicando a natureza do(s) erro(s). Aqui está um exemplo ...
  • O exemplo acima é uma situação em que o serviço de pesquisa responde ao usuário com uma resposta "parcial" de resultados agregados apenas das partições de índice que foram bem-sucedidas. O usuário deve investigar a integridade de um cluster e o que fez com que algumas das partições de índice falhassem ou deixassem de responder.

Espero que este artigo seja útil para você. Obtenha a versão mais recente do Couchbase Server no site Downloads página!

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Abhinav Dangeti, engenheiro de software

Trabalho na pesquisa distribuída de texto completo do Couchbase

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.