Um dos meus novos recursos favoritos que está sendo apresentado no Couchbase Server 4.5 é o Full Text Search, ou FTS. No ano passado, ele foi lançado como um Developer Preview autônomo, e agora você pode experimentar um novo Developer Preview totalmente integrado ao Couchbase 4.5. Cécile já escreveu um postagem no blog sobre o uso do FTS em um aplicativo de gerenciamento de conteúdo com suporte do Couchbase; aqui, quero apresentar uma introdução ao conjunto de recursos.

O que é texto completo e por que devo me preocupar?

O texto completo permite que você pesquise e encontre o que está procurando, mesmo sem correspondências exatas. Assim como o GOSTO palavra-chave em SQL? Na verdade, não. É outra coisa. GOSTO permitem o uso de curingas, o que é bem diferente. Veja o exemplo a seguir:

'O Couchbase é incrível'

Se sua consulta contiver "campo LIKE '%is Awesome%'", ele corresponderá. Se ele contiver "LIKE '%is awesome%' (% é incrível%)", não o fará porque GOSTO diferencia maiúsculas de minúsculas. Algumas linguagens SQL suportam a opção COMO que não diferencia maiúsculas de minúsculas. No momento, ela não é compatível com o N1QL, mas você pode usar a opção TOLOWERCASE e obterá o mesmo efeito. Ele também não corresponderá se você cometer um erro de digitação como "LIKE '%is awesom%'". Assim GOSTO permite que você corresponda a uma parte exata de um campo.

O texto completo faz muito mais. Ele fará a correspondência entre 'couchbase awesom'. Isso significa que ele não diferencia maiúsculas de minúsculas, pode ignorar palavras sem importância como 'is' (palavra de parada é o termo técnico) e é tolerante a erros como os de digitação.

Isso é tudo? Não, deixe-me lançar a lista obrigatória de recursos da nova versão:

  • Análise de texto com vários analisadores pré-construídos: Dinamarquês, holandês, inglês, finlandês, francês, alemão, húngaro, italiano, norueguês, persa, português, romeno, russo, sorani, espanhol, sueco, tailandês, turco
  • Diferentes tipos de consulta
    • Termo, Frase, Correspondência, Correspondência de frase, Prefixo
    • Conjunção, disjunção, booleano
    • Intervalos numéricos e de datas
    • String de consulta (uma sintaxe de consulta conveniente para chamar a maioria dos tipos listados acima, como "ale -hoppy +sweet")
  • Pontuação (tf-idf)
  • Campos armazenados, destaque de resultados e snippets de resultados
  • Facetas: Faceta de termos, Faceta de intervalo numérico, Faceta de intervalo de datas

Todos esses recursos são respaldados por Bleve. É um projeto de pesquisa e indexação de texto completo de código aberto escrito em Go e iniciado pelos engenheiros do Couchbase. O Couchbase FTS é a integração do Bleve em um cluster do Couchbase.

O que você pode fazer com a pesquisa de texto completo?

Sabe aquela lupa que você vê em todos os sites e que coloca em todos os wireframes de sites sem pensar duas vezes? Geralmente é a pesquisa de texto completo. O Google definiu as expectativas do usuário para um nível de texto completo. Você quer ser capaz de executar uma pesquisa facetada ou mostrar um resultado de pesquisa no contexto. E, pensando bem, você pode dizer o mesmo de todos os sites de grande sucesso, como Spotify, Netflix ou outro campeão da economia digital.

Achei que poderia usar o ElasticSearch ou o SOLR para o Fulltext...

Resposta curta: sim, você pode. Existem conectores do Couchbase Server para ambos. No momento, o Couchbase FTS ainda está em pré-visualização para desenvolvedores e não anunciou uma data de GA, portanto, você não deve substituir nada ainda. A longo prazo, esses produtos podem ter recursos de que você precisa e que o FTS não tem. O Couchbase FTS não será a solução definitiva se a pesquisa de texto completo for o núcleo de sua empresa. No entanto, para muitos casos de uso de pesquisa, o Couchbase FTS será suficiente para que você não precise implantar outra ferramenta, em outra caixa, mantê-la sincronizada, monitorá-la, certificar-se de que o conector esteja funcionando corretamente, gerenciá-la e assim por diante.

Integração com o Couchbase

O Couchbase FTS é a integração do Bleve com o Couchbase Server. Ele nos permite criar um índice de texto completo com base no conteúdo dos documentos JSON armazenados no Couchbase. Um índice normal é uma lista de documentos e as palavras que eles contêm (tecnicamente, os termos são armazenados, não as palavras, mas estamos entre amigos aqui). Um índice de texto completo é um tipo de índice invertido: ele informa, para uma determinada palavra, uma lista de todos os documentos em que essa palavra aparece.

Veja como você pode usar o FTS para criar seus próprios índices de texto completo.

A partir do Couchbase 4.5, todos os índices foram reagrupados na guia Índice (que está convenientemente posicionada ao lado da guia Consulta, levando você ao nosso novo e interessante banco de trabalho de consulta). Na guia Index, você encontrará os índices globais usados pelo N1QL, Views e Full Text.

A tela é dividida em três partes. A primeira permite que você execute consultas de texto completo, a segunda permite que você defina índices de texto completo e a terceira permite que você defina aliases para índices de texto completo (ou outros aliases de índice). Por que você precisaria de um alias para seu índice? Ele acrescenta um nível de indireção que é útil para seu aplicativo. Na maioria das vezes, ao trabalhar com índices de texto completo, você gasta tempo ajustando-os para obter os resultados desejados. Talvez você crie um índice, use-o por algum tempo, veja o desempenho dele, tente outro índice com configurações ligeiramente diferentes, talvez elimine alguns documentos inúteis etc. Se você usar um alias, não precisará alterar o nome do índice todas as vezes em seu aplicativo. Em vez disso, basta alterar para qual índice o alias aponta. Ambos os índices estão funcionando o tempo todo e você só precisa mudar de um para o outro.

Para começar, você precisa criar um índice. Vou criar um índice simples chamado "beer-ft".

Depois que o índice for criado, volte para a guia Full Text (Texto completo). Agora você pode selecionar o índice e executar uma consulta de texto completo. Isso lhe dará todos os documentos que contêm a palavra "ale" em qualquer um de seus campos. Você pode restringir a pesquisa a um campo específico. Por exemplo, se quiser saber quais documentos têm "ale" no campo nome, você pode escrever "name:ale".

Se você quiser saber quais cervejas são mais leves, pode se sentir tentado a usar "light ale" como string de consulta. Na verdade, isso lhe dará a lista de documentos que contêm ale e light. Se você usar '"light ale"' entre aspas, obterá a lista de documentos que contém "light ale".

Há outras maneiras de ajustar sua consulta, dê uma olhada em Documentação do Bleve aqui. Os índices também têm funcionalidades mais avançadas, como filtragem de tipos, mapeamento de campos personalizados, mapeamento de filhos para estruturas incorporadas/aninhadas, analisador personalizado e muito mais.

PERGUNTAS FREQUENTES

O FTS será GA com o Couchbase Server 4.5?

Não. O FTS será fornecido integrado ao Couchbase Server 4.5 GA, mas não haverá suporte ao FTS para uso em produção.

Haverá diferenças entre o DeveloperPreview e o 4.5 GA?

Haverá algumas diferenças entre as duas versões. Estamos trabalhando arduamente no desempenho e no suporte contínuo a vários nós. No momento, só é possível executar o Couchbase FTS em um nó de um cluster. Obviamente, é importante que o FTS seja resiliente e capaz de lidar com alterações de topologia, failovers e eventos de rebalanceamento. Além disso, é quase certo que as APIs sofrerão algumas pequenas alterações.

Qual é a melhor maneira de experimentar o Couchbase FTS?

O conjunto de dados de amostra de cerveja que vem com o Couchbase Server funciona bem. A regra geral sobre as visualizações do desenvolvedor do Couchbase não serem ajustadas quanto ao desempenho se aplica aqui - essa é uma chance de experimentar a funcionalidade e a API, mas ao executá-la em grandes quantidades de dados, você poderá encontrar problemas. Se você decidir usar seu próprio conjunto de dados, recomendamos manter o tamanho modesto, como 10.000 documentos ou menos.

Ainda há suporte para os conectores Elasticsearch e SOLR?

Sim, com certeza. Não cobriremos tudo o que o Elasticsearch ou o SOLR podem oferecer a você. Esses conectores serão mantidos.

Há algum plano de integração com o N1QL?

Sim, embora precisemos chegar à qualidade do GA primeiro.

E quanto a uma integração com o Kibana?

Quando as pessoas ouvem falar do Fulltext atualmente, elas pensam na Elastic e, especialmente, em seu poderoso painel de controle Kibana. Dito isso, não temos planos de criar uma integração. Mas, por outro lado, é um software de código aberto, então talvez alguém nos surpreenda...

OK, vamos lá!

Vá até o site Página de downloads do Couchbase e experimente o FTS, juntamente com todos os outros novos recursos do Couchbase Server 4.5 DP. Diga-nos o que achou, queremos ouvir sua opinião.

Autor

Postado por Laurent Doguin

Laurent é um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve código em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programação reativa e outras coisas que estão na moda. Ele também foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experiência para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Relações com Desenvolvedores na Couchbase.

2 Comentários

  1. [...] on-line. Para ter uma ideia geral sobre o serviço de pesquisa de texto completo do Couchbase, consulte a seguinte postagem do blog para obter algumas informações úteis [...]

  2. Os índices criados para a pesquisa de texto completo podem causar problemas de desempenho no Couchbase? Por desempenho, quero dizer extração de documentos por qualquer aplicativo?

Deixar uma resposta