Isso é inevitável: Se estiver trabalhando com um banco de dados de documentos, você precisará pesquisar seus documentos JSON (e por meio deles).

Neste tutorial, você adicionará os recursos de pesquisa de texto completo do Couchbase à API REST básica criada com o Express que criamos ao longo desta série sobre Node.js.

A postagem anterior desta série usou o Express para criar uma API básica para criar consultas N1QL.

A postagem de hoje leva você um passo adiante. Você aprenderá a encontrar documentos JSON que contenham o texto que você está procurando, adicionando funcionalidade ao seu aplicativo que usa a função Couchbase API de pesquisa. Vamos começar.

O que é pesquisa de texto completo?

Pesquisa de texto completo (FTS) é um nome estranho, mas é um conceito bem desenvolvido em áreas acadêmicas focadas na análise de grandes partes de conteúdo de texto. No domínio do banco de dados, nós a chamamos apenas de "pesquisa", e ela se concentra em encontrar texto em documentos JSON.

Os desenvolvedores de aplicativos usam ferramentas relacionadas à pesquisa para encontrar correspondências sem precisar escrever consultas SQL que, em geral, exigem que você saiba como/onde encontrar os dados de interesse. Em um cenário de pesquisa de texto completo, você procura o texto com mais sofisticação.

Por exemplo, os sistemas de pesquisa entendem as palavras-raiz usando um conceito conhecido como stemming, para que você não precise procurar manualmente muitas permutações de um termo. Da mesma forma, curingas, prefixos e correspondência difusa são possíveis com sistemas de pesquisa robustos.

Configuração de índices de pesquisa

Há duas etapas para usar um sistema de busca: (1) indexar/analisar o texto em cada documento e (2) solicitar uma lista de documentos que contenham correspondências baseadas em texto.

O estágio de indexação é semelhante à criação de índices secundários para dados relacionais/tabulares, em que você descreve os campos ou elementos a serem indexados e o sistema os controla para você. Você também pode simplesmente dizer ao sistema para indexar cada campo de texto no documento, embora isso possa não ser eficiente na produção de grandes conjuntos de dados.

O estágio de consulta (também conhecido como busca) envia um trecho de texto para o servidor para que ele o procure. O sistema compara esse texto com os índices e retorna uma lista de documentos com correspondências.

A pesquisa de texto completo é simples, mas há um conjunto infinito de opções e perguntas a serem consideradas, como:

    • Como lidar com frases e números
    • Identificação do local em um documento onde existe um texto específico
    • Análise de texto em vários idiomas

Na verdade, esse é um tópico de aprofundamento próprio. Os padrões simples usados nesta postagem podem ser expandidos para todos os cenários de pesquisa diferentes, conforme descrito em esta introdução à pesquisa de texto completo.

Preparando sua instância do Couchbase

Se você for novo nesta série de tutoriais de codificação JavaScript, precisará instalar o amostra de viagem conforme descrito no Documentação do Couchbase.

O script usado na postagem anterior desta série também será usado como ponto de partida para a postagem de hoje. O código Node.js está incluído em o final dessa postagem.

À medida que avança nestes tutoriais do Node.j, você está criando um aplicativo de API REST mais complexo e útil. Vamos nos aprofundar na criação do índice de pesquisa necessário para dar suporte à próxima etapa de seu projeto.

Criar um índice de pesquisa de texto básico

Para criar um índice de pesquisa, você seleciona a opção Pesquisa na guia Console da Web do Couchbase e pressione o botão Adicionar índice botão.

Em seguida, digite o nome que deseja dar ao índice e escolha o Bucket a ser analisado (amostra de viagem). Termine pressionando o botão Criar índice para enviar suas escolhas. Há muitas opções diferentes para escolher, mas, no exemplo de hoje, manteremos todos os padrões para simplificar. A animação a seguir mostra cada uma dessas etapas:

Process to create a search index using Couchbase Web Console

Depois de concluir essas etapas, você deverá ver os índices de pesquisa e o status deles no Console da Web. Você também poderá ver quantos documentos foram processados.

Indexação no amostra de viagem O Data Bucket leva alguns minutos, mas, depois de concluído, você pode fazer uma solicitação de pesquisa de amostra por meio da interface de usuário básica da Web, conforme mostrado abaixo.

Entering a full-text search query on an index in the Couchbase Web Console

Você insere um termo simples na caixa de pesquisa e uma lista de IDs de documentos correspondentes é retornada com as correspondências de maior classificação na parte superior. O Console da Web facilita o clique nessas IDs para ver o texto completo do documento.

Criação de uma função de pesquisa de texto simples

Há muitas opções adicionais para ajustar suas pesquisas com operações booleanas, correspondência difusa e muito mais. O Console da Web faz apenas uma simples string de consulta e esse é o mesmo tipo que você implementará em seu código.

Para criar a nova função de pesquisa de texto completo, você precisa:

  1. Forneça uma cadeia de caracteres para pesquisar (por exemplo, "grand").
  2. Especifique o índice de pesquisa a ser usado: pesquisa de viagens.
  3. Declara o tipo de consulta a ser usado: queryString.
  4. Monte todas as peças e envie para o servidor.
  5. Receber resultados e exibi-los ao usuário/aplicativo.

Estas cinco linhas de código JavaScript abaixo são um exemplo de configuração dessas variáveis, agrupando-as, passando-as para o cluster e imprimindo os resultados no console:

Se você quiser ajustar o tipo de consulta de pesquisa, troque queryString na terceira linha com outro método. Exemplos de código de diferentes tipos são fornecidos na seção Documentação do Couchbase Full-Text Search.

Por exemplo, uma consulta de intervalo de datas tem a seguinte aparência:

const dateQuery = couchbase.SearchQuery.dateRange().start(startDate).end(endDate)

Abaixo está um exemplo completo de script autônomo que inclui a lógica básica. Nós o incorporamos ao exemplo da API Express REST na próxima seção.

Levando o código adiante

Continuando nosso exemplo, agora você pode adicioná-lo ao código da API REST que criamos em Tutorial da semana passada.

Adicione o código junto com o novo roteamento Express para que você possa enviar uma solicitação de pesquisa de um URL no navegador. Nesse caso, o caminho será: /search/[termo de pesquisa] - Por exemplo, /search/grand.

Aqui está a definição de rota para criar a consulta de pesquisa de texto completo:

Clique abaixo para ver o código completo da API REST em funcionamento, incluindo a busca de documentos, a consulta N1QL e as rotas de pesquisa:

Execução da API REST de consulta de pesquisa

Acesse o aplicativo por meio do navegador da Web na porta 3000 e com o caminho de pesquisa: http://localhost:3000/search/grand.

Os resultados da pesquisa são mostrados aqui e incluem uma lista de IDs de documentos correspondentes e a pontuação de classificação da correspondência:

Observe que os resultados da pesquisa também incluem alguns metadados úteis que mostram o número total de ocorrências/combinações, o tempo de execução e muito mais.

Conclusão

As oportunidades de uso do Couchbase em aplicativos baseados em pesquisa são infinitas.

Com todos os diferentes tipos de consultas e outras opções de pesquisa disponíveis, ainda há muito mais a aprender. Aqui estão alguns pontos de partida para você considerar:

Este é o resumo desta série sobre desenvolvimento com o Node.js e o Couchbase. Boa sorte em sua jornada contínua com o JavaScript!

Fique por dentro do restante da série de instruções sobre Node.js + Couchbase:

 

É hora de experimentar por si mesmo:
Faça o download do Couchbase 7 hoje mesmo

 

Autor

Postado por Tyler Mitchell - Gerente sênior de marketing de produtos

Trabalha como Gerente Sênior de Marketing de Produto na Couchbase, ajudando a levar o conhecimento sobre os produtos para o centro das atenções do público e, ao mesmo tempo, apoiando nossas equipes de campo com conteúdo valioso. Sua paixão pessoal são todas as coisas geoespaciais, tendo trabalhado em GIS durante metade de sua carreira. Agora, a IA e a pesquisa vetorial estão em sua mente.

Deixar uma resposta