Escrevi recentemente sobre Usando o Full Text Search (FTS) em um aplicativo Node.js que utiliza o Couchbase Server 4.5 e superior. Como você deve saber, o FTS está disponível como Developer Preview a partir do Couchbase Server 4.5. Isso é muito importante para o Couchbase, pois abre as portas quando se trata de possibilidades. Em vez de fazer consultas curinga ineficientes, podemos usar consultas de pesquisa em índices de texto completo. A necessidade de usar o ElasticSearch ou o Solr também se torna menos necessária, a não ser, é claro, que seu negócio seja baseado em pesquisa.

Vamos pegar os exemplos vistos no artigo sobre o Node.js e vê-los em ação usando a linguagem de programação Go. Se você não se interessa pelo Node.js ou não está familiarizado com o exemplo usado, não se preocupe. No exemplo anterior, tínhamos um cenário imaginário de avaliação de currículo em que podíamos examinar currículos de candidatos a emprego em busca de palavras-chave e pontuá-los. Continuaremos a usar esse exemplo.

Criar um novo projeto com as dependências

Para facilitar a compreensão deste exemplo, começaremos do zero. Dito isso, pressupõe-se que você já tenha o GoLang instalado e configurado em seu computador e que Servidor Couchbase 4.5 está ativo e em execução.

Crie um novo projeto GoLang. Meu projeto será encontrado em $GOPATH/src/github.com/nraboy/cbfts/main.go. Antes de entrarmos no código, precisamos instalar o Couchbase Go SDK. No prompt de comando (Windows) ou no terminal (Mac e Linux), execute o seguinte:

Neste ponto, estamos prontos para começar a desenvolver, mas, antes disso, precisamos configurar os índices necessários em nosso bucket do Couchbase.

Criar um índice de pesquisa de texto completo no Couchbase Server

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.

Conhecendo o modelo de dados de exemplo

Com o índice criado, vamos dar uma olhada rápida no nosso modelo de dados. Sabemos que este será um documento semelhante a um currículo, portanto, com um pouco de imaginação, podemos criar algo assim:

O documento acima contém informações como habilidades, informações de mídia social e histórico de emprego. Sim, um verdadeiro aplicativo de criação de empregos provavelmente terá muito mais detalhes, mas este é apenas um exemplo.

O escopo do que vamos prestar atenção é o texto Defensor do desenvolvedor. Vamos escrever o código GoLang para pesquisar essa frase.

Desenvolvimento do aplicativo para pesquisa de dados

Como este projeto é um exemplo simples, todo o código que escrevermos estará em um único arquivo main.go arquivo. Vamos começar importando todas as dependências a serem usadas no aplicativo:

Como você pode ver acima, estamos incluindo uma dependência JSON para transformar estruturas em JSON. Também estamos importando a dependência do Couchbase e do Couchbase FTS.

Os dados que queremos coletar serão muito específicos. Por esse motivo, seria uma boa ideia criar uma nova estrutura de dados para acomodar isso. Vamos chamar essa estrutura de FtsHit e fazer com que ele se pareça com o seguinte:

Manteremos o ID do documento encontrado na pesquisa, bem como a pontuação que a pesquisa retorna em cada acerto. Cada uma dessas propriedades de estrutura tem suas próprias tags JSON e serão ignoradas se estiverem vazias.

Isso nos leva ao código mágico encontrado em nosso principal função.

Antes de começarmos a pesquisar, precisamos estabelecer uma conexão com o nosso cluster do Couchbase e abrir um bucket. Estarei me conectando a um nó em execução localmente e ao padrão balde. Uma vez conectados, podemos criar uma nova consulta de pesquisa de texto completo usando o Busca de currículo índice. Essa consulta procurará o texto defensor do desenvolvedor em todos os documentos e em qualquer propriedade. Basicamente, se o texto existir em qualquer lugar em um documento, o documento será contado como uma ocorrência.

Com a consulta em mãos, podemos executá-la e percorrer os resultados. Cada resultado terá determinadas partes colocadas em nosso FtsHit onde ele será analisado em JSON e impresso.

Até agora, tudo bem, certo?

Bem, o que acontece quando você quer ser um pouco mais específico em sua pesquisa? Embora seja conveniente e legal poder pesquisar um documento inteiro, talvez queiramos pesquisar apenas o histórico de emprego.

Podemos fazer um ajuste no valor real Pesquisa com pouco esforço:

Embora tenhamos tentado manter esse exemplo simples, há muitas outras coisas interessantes que você pode fazer com a pesquisa de texto completo. Talvez você queira expandir as condições de pesquisa para ser mais específico ou talvez queira usar um índice que seja mais específico. Mais informações sobre o FTS podem ser encontradas na seção Couchbase documentação do desenvolvedor.

Conclusão

Acabamos de ver como foi fácil usar a pesquisa de texto completo (FTS) no Couchbase usando a linguagem de programação Go. Usando o FTS, podemos pesquisar dentro de documentos de forma mais eficiente do que usando consultas que incluem um monte de curingas.

Para saber mais sobre o FTS, visite o site Portal do desenvolvedor do Couchbase.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Deixar uma resposta