Quando desenvolvo aplicativos, sempre me deparo com um cenário em que preciso pesquisar um conjunto específico de texto em um bloco de dados. Eu, como muitos outros, muitas vezes me vejo optando pelo caminho mais fácil e fazendo uma consulta com curinga. No entanto, o uso de curingas em uma consulta pode causar um significativo desperdício de desempenho e ineficiências em seu aplicativo ou banco de dados. É nesse ponto que a pesquisa de texto completo (FTS) entra em ação.
A pesquisa de texto completo opera em índices de texto completo e é muito mais eficiente do que trabalhar com curingas quando se trata de pesquisar palavras e frases em um banco de dados. Até agora, para que isso fosse possível, era necessário usar outro software de pesquisa, como o Solr ou o ElasticSearch. A partir do Couchbase 4.5, o FTS está disponível como visualização do desenvolvedor para trazê-lo para uma única plataforma.
Vamos dar uma olhada em como usar a pesquisa de texto completo em um aplicativo Node.js usando o SDK do Node.js para o Couchbase Server. O que vem a seguir pressupõe que você já tenha o Node.js instalado e pronto para o desenvolvimento. Também pressupõe que você esteja usando o Couchbase Server 4.5 ou superior.
Para manter as coisas simples, vamos trabalhar em um novo projeto Node.js com uma história simples. Vamos começar criando um novo projeto em algum lugar em nossa máquina. Vou chamar esse projeto de currículo. Como você deve ter adivinhado pelo nome do projeto, vamos criar um aplicativo do tipo parsing para currículos de candidatos a emprego. Podemos usar o FTS para procurar palavras-chave ou frases que sejam relevantes para determinados cargos. Como o FTS oferece pontuação de pesquisa, podemos ver quais candidatos podem ser mais qualificados para o cargo.
Criação de um novo projeto Node.js
Usando um Terminal (Mac e Linux) ou um Prompt de Comando (Windows), execute o seguinte com o projeto como o diretório ativo atual:
1 2 3 |
npm inicial -y |
O comando acima inicializará um novo projeto Node.js. A partir de agora, todas as atividades do Terminal e do prompt de comando serão realizadas com o projeto como o diretório de trabalho atual.
Vamos criar mais um script Node.js do que um aplicativo RESTful. Dito isso, há apenas um requisito de dependência, que é o Couchbase Node.js SDK. Para instalá-lo, execute o seguinte no prompt de comando ou no terminal:
1 2 3 |
npm instalar couchbase --salvar |
Embora ainda não vamos começar a programar, queremos criar nosso arquivo Node.js principal. Criar app.js na raiz de seu projeto.
Criação de um índice de pesquisa de texto completo
Antes de começar a usar a pesquisa de texto completo, você deve criar um índice especial. Isso pode ser feito na seção Índices -> Texto completo do painel de controle administrativo do Couchbase.
Nessa seção, você deve escolher Novo índice de texto completo e escolha o nome e o bucket para aplicá-lo. Para este exemplo, usaremos o padrão e um índice de Busca de currículo. Nosso índice será bem básico, portanto, recomendo que você dê uma olhada no documentação para que você possa atender melhor às suas necessidades.
Depois que o índice tiver sido criado, clique no botão atualizar. Neste ponto, você pode testá-lo por meio do painel ou de seu próprio código.
Desenvolvimento do aplicativo Node.js
Apenas para reiterar, este projeto será bastante simples. Você certamente pode expandir essa ideia e criar um aplicativo completo de avaliação de currículo. Para nós, estamos apenas arranhando a superfície das possibilidades.
Abra o arquivo app.js e inclua o seguinte código JavaScript:
1 2 3 4 5 6 |
var Couchbase = exigir("couchbase"); var agrupamento = novo Couchbase.Aglomerado("couchbase://localhost") var balde = agrupamento.openBucket("default"); |
No exemplo acima, estamos importando a dependência que baixamos e estabelecendo uma conexão com o cluster do Couchbase de nossa escolha. Neste caso, é um cluster de nó único em minha máquina local.
Antes de começarmos a realizar operações de pesquisa de texto completo, vamos pensar em nosso modelo de dados. Digamos que cada currículo seja um documento no banco de dados. Por exemplo, aqui está meu currículo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
{ "firstname": "Nic", "lastname" (sobrenome): "Raboy", "habilidades": [ "java", "node.js", "golang", "nosql" ], "summary" (resumo): "", "social": { "github": "https://www.github.com/nraboy", "twitter": "https://www.twitter.com/nraboy" }, "emprego": [ { "empregador": "Couchbase", "título": "Defensor do desenvolvedor", "localização": "São Francisco" } ] } |
Sim, é claro que este não é meu currículo real. É apenas um exemplo para ver com o que vamos trabalhar. Agora, digamos que queremos encontrar todos os currículos em que a pessoa tenha experiência anterior como defensor de desenvolvedores. No Node.js, podemos criar o seguinte:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var Pesquisa = Couchbase.Pesquisa; var consulta = Pesquisa.novo("resume-search" (pesquisa de currículo), Pesquisa.partida("Defensor do desenvolvedor")); balde.consulta(consulta, função(erro, resultado, meta) { se(erro) { retorno console.registro("ERRO: ", erro); } para (var i = 0; i < resultado.comprimento; i++) { console.registro({"id": resultado[i].id, "pontuação": resultado[i].pontuação}); } retorno; }); |
Como eu indiquei que era Developer Advocate no meu histórico de emprego, meu registro aparecerá. No entanto, a consulta do FTS acima é bastante vaga. Se houver "developer advocate" em qualquer propriedade do documento, saberemos sobre ele. Talvez queiramos restringir a consulta especificamente ao histórico de empregos. Nesse caso, podemos alterar nosso Pesquisa
para o seguinte:
1 2 3 |
var consulta = Pesquisa.novo("resume-search" (pesquisa de currículo), Pesquisa.partida("Defensor do desenvolvedor").campo("employment.title")); |
Observe o uso da palavra campo
função? Você também pode usar campos
e passar uma matriz de campos para pesquisa.
Há muitas outras maneiras de pesquisar dados usando o FTS e o SDK do Node.js. Para obter algumas informações sobre o uso do FTS, consulte a seção documentação do desenvolvedor ou o Documentação da API do Node.js.
Conclusão
Se você precisar consultar dados curinga de maneira eficiente, o Couchbase e o SDK do Node.js o ajudarão com seu suporte à pesquisa de texto completo (FTS). Há cenários muito mais complexos para a pesquisa de texto completo do que os que mencionei. Por exemplo, talvez você queira começar a adicionar condições à pesquisa ou visualizar informações de faceta. Tudo isso pode ser lido na seção Portal do desenvolvedor do Couchbase.