Pesquisa de texto completo

Como criar índices para pesquisa de texto completo no Couchbase 7.0

Os índices são os infraestrutura que possibilita a pesquisa de texto completo.

O novo recurso Scopes and Collections do Couchbase Server 7.0 torna a pesquisa de texto completo em seus aplicativos mais poderosa do que nunca. Para potencializar essas pesquisas, são necessários índices de texto completo.

Este artigo fornece uma visão geral dos escopos e coleções em Couchbase e orienta você na criação de um índice de texto completo por meio do novo Couchbase Quick Editor. Também veremos as alterações no Standard Editor para acomodar Scopes e Collections.

O que é pesquisa de texto completo?

A Pesquisa de Texto Completo (FTS) refere-se a técnicas de pesquisa de texto em um documento ou em uma coleção de documentos. O Couchbase oferece suporte à indexação e à pesquisa de texto em vários idiomas e fornece analisadores de texto personalizáveis para interpretar o texto de várias maneiras por meio de tokenizadores, filtros etc.

O paradigma de Coleções em um bucket do Couchbase permite que os usuários definam índices que podem se inscrever em vários Escopos e Coleções. Mas o que, exatamente, são Escopos e Coleções?

O que são escopos e coleções?

Um bucket do Couchbase - o banco de dados distribuído, particionado e baseado em documentos - é o núcleo do Servidor Couchbase. Com a versão 7.0Se você estiver usando o recurso de classificação, poderá categorizar documentos configurando compartimentos para formar uma hierarquia organizacional. Cada categoria é mantida em um sub-bucket (que também é particionado); esse sub-bucket é um Coleção. Cada bucket agora é gerenciado por meio de uma hierarquia de três camadas, como você pode ver na imagem abaixo.

Aqui está um exemplo de bucket e sua categorização com Escopos e Coleções para um menu de restaurante. (Para obter mais contexto sobre a relação entre Escopos e Coleções, leia isto Introdução à compreensão de escopos e coleções.)

Restaurant menu to illustrate Scopes and Collections in Couchbase 7.0

Para essa hierarquia de bucket, você pode definir um índice de pesquisa de texto completo para assinar e indexar dados como:

    • O conteúdo de todos os tacos vegetarianos dentro do alimentos Escopo do menu
    • As carnes usadas em todos os hambúrgueres do alimentos Escopo do menu
    • Os tipos de coquetéis e bebidas à base de café no bebida Escopo do menu

Você já entendeu a ideia.

Observação: Você pode definir um índice de texto completo para se inscrever em várias coleções, mas todas essas coleções devem pertencer a um único escopo. Uma definição de índice não pode transcender um escopo.

Vamos falar sobre definições de índices

A captura de tela abaixo mostra como adicionar um índice no editor padrão do Couchbase (como era no Couchbase Server 6.6).

Couchbase full-text search index in version 6.6

Na captura de tela acima, pretendo indexar todo o conteúdo nos documentos JSON do bucket amostra de cerveja que tem um campo tipo cujo valor é cerveja. Observe a visualização da definição do índice no lado direito da tela, que contém todas as configurações do índice cervejas. Essa visualização se adapta imediatamente a qualquer alteração que fizermos nas configurações.

Como você pode ver, há muitas configurações na definição do índice. E Servidor Couchbase 7.0 inclui ainda mais variações para dar suporte a Collections, o que pode torná-lo assustador, especialmente para novos usuários.

É por isso que introduzimos o Quick Editor para definir índices. Com ele, os novos usuários (ou qualquer pessoa que não queira se aprofundar em configurações avançadas para seus índices de pesquisa de texto completo) podem começar a usar o Serviço de Pesquisa do Couchbase. Antes de nos aprofundarmos no Quick Editor em detalhes, vamos ver como a versão 7.0 atualizou a definição de um índice de texto completo para acomodar as coleções. Fique à vontade para Ir diretamente para a discussão sobre o Quick Editor se você preferir.

Como o Couchbase Server 7.0 atualiza as definições de índice de texto completo

Vamos examinar rapidamente as atualizações da definição de um índice de texto completo no Couchbase 7.0 para acomodar Escopos e Coleções. Observe que o Couchbase continuará a oferecer suporte a definições de índice mais antigas de versões anteriores do Couchbase Server.

Vamos continuar com o exemplo que usei anteriormente: o cervejas índice no bucket do Couchbase amostra de cerveja. Removendo as configurações padrão e mantendo apenas as configurações relevantes, aqui está uma definição de índice mínimo para ele:

Em termos de 7.0, todo esse conteúdo no balde amostra de cervejas reside no Padrão Coleção do Padrão Escopo - o que significa que quando você atualiza o Couchbase para a versão 7.0, os dados em seu bucket são movidos para o escopo Padrão Coleção dentro do Padrão Escopo.

A definição de índice acima funciona com a versão 7.0. No entanto, aqui está uma alternativa: uma definição de índice da versão 7.0 que faz exatamente a mesma coisa que a anterior.

Observe as três diferenças entre as duas definições acima:

    • sourceType foi alterado de couchbase para gocbcore. Alteramos o SDK subjacente que o índice de texto completo usa para se comunicar com um bucket do Couchbase para um mais novo e com melhor suporte.
    • params.doc_config.mode foi alterado de campo_tipo para scope.collection.type_fieldindicando que os nomes de mapeamento de tipos agora seguem esse formato.
    • O nome do mapeamento do tipo agora se tornou Padrão._Padrão._Cervejaindicando que ele indexa documentos de tipo:cerveja de dentro do Padrão Coleção no Padrão Escopo do balde amostra de cerveja.

As coleções ajudam a modelar melhor seus dados

Modelar seus dados em uma única coleção (imitando o comportamento pré-7.0) significa que todos os dados dentro do bucket são enviados e o índice deve filtrar os documentos com base na definição.

Com Escopos e Coleções, você pode modelar seus dados em categorias, cada uma das quais reside em uma Coleção separada. Destacarei uma vantagem óbvia dessa abordagem no exemplo a seguir.

O amostra de cerveja contém documentos do tipo cerveja e cervejaria todos residentes na Padrão Coleção do Padrão Escopo. Vamos mudar esse modelo:

  1. Configurar um escopo conteúdo dentro de amostra de cerveja.
  2. No escopo, configure duas coleções: cervejas e cervejarias.
  3. Carregar dados de tipo:cerveja em cervejas e dados de tipo:cervejaria em cervejarias.

Aqui está uma definição de índice para manter os mesmos dados que os anteriores: ...

Desta vez, a caçamba envia documentos de apenas tipo:cerveja. Portanto, com a definição de índice mais recente, seus nós de pesquisa seriam:

    • Consome menos largura de banda da rede
    • Beneficie-se de tempos de criação de índices mais rápidos

Dê uma olhada nisso publicação do blog complementar para obter mais detalhes sobre as nuances das definições do índice de texto completo com as coleções de baldes do Couchbase.

Apresentando o Quick Editor

Aqui está uma olhada no novo Quick Editor:

Quick Index Editor in Couchbase Server

Introducing the Quick Editor in Couchbase Server 7.0

Quando você seleciona um bucket, um escopo e uma coleção nos campos de espaço-chave mostrados na captura de tela, um documento de amostra aparece na seção Selecionar campos; ele pertence ao bucket.scope.collection selecionado. Um botão de atualização no canto superior direito da seção Select Fields (Selecionar campos) permite iterar pelos documentos (aleatoriamente) dentro da coleção.

A sample JSON document in Couchbase

Agora você pode selecionar um campo do documento (clicando no nome/valor do campo). O campo selecionado é exibido para configuração na seção Configurar campos. O tipo do campo é detectado automaticamente (atualmente, somente texto, número e Booleano são reconhecidos). Se o campo fosse data e hora (string in ISO-8601 ) ou um ponto geográfico (um objeto, uma matriz ou um geohash), você precisará selecionar explicitamente o tipo no menu suspenso Type (Tipo).

Configure field in Couchbase index editor

Quando o campo configurado é Adicionar-ed, ele aparece na seção Mapped Fields (Campos mapeados), como pode ser visto abaixo. É possível editar um campo mapeado a qualquer momento, selecionando-o novamente na seção Select Fields (Selecionar campos) ou na seção Mapped Fields (Campos mapeados).

Mapped field in Couchbase index editor

O botão Create Index (Criar índice), na parte inferior da página, permite que você crie o índice.

Aqui estão as configurações disponíveis para a configuração de um campo:

    • Tipo é o tipo do valor do campo. Os tipos compatíveis são texto, número, booleano, ponto geográfico e data e hora, conforme detalhado acima.
    • Indexar esse campo como um identificador aparece somente se o tipo de campo escolhido for texto. Se selecionada, essa opção aplicará o analisador de palavras-chave para o texto.
    • O Idioma O menu suspenso estará disponível se o tipo de campo for texto e o campo não é indexado como um identificador. No menu suspenso Idioma, você pode escolher o analisador para o campo de texto.
    • As próximas quatro caixas de seleção se traduzem essencialmente em uma única opção ou em uma combinação de opções (como no Editor Padrão) compatíveis com um campo:

Options table in Couchbase Server 7.0 full-text index editor

Você pode Encontre mais documentação sobre essas opções aqui.

    • A última seção é para definir Pesquisável comoque recebe uma entrada de texto que serve como alias para o campo. Essa configuração é opcional e o padrão é o nome do campo selecionado. Durante a pesquisa, a entrada nessa seção é o campo a ser procurado.

Você pode editar uma configuração de índice de dentro do Editor rápido a qualquer momento, usando o Editor rápido ou o Editor padrão.

Opções limitadas no Quick Editor

    • Conforme observado anteriormente, para simplificar, o Quick Editor oferece opções limitadas para configurar as definições de índice.
    • Não é possível indexar um campo que não esteja disponível no documento de amostra carregado na seção Selecionar campos.
    • Não há suporte para analisadores personalizados.
    • Geoponto e Data e hora não são reconhecidos automaticamente. No entanto, é possível definir explicitamente o tipo de campo na seleção.
    • Não é possível usar o Editor rápido para editar um índice criado com o Editor padrão. Entretanto, você pode usar o Editor padrão para editar um índice criado com o Editor rápido.
    • Embora seja possível configurar campos em várias coleções, não é possível indexar o mesmo campo várias vezes em uma única coleção.
    • O Quick Editor não oferece suporte à filtragem de documentos em um escopo.coleção (para indexar apenas documentos de um determinado tipo).
    • Você não pode definir réplicas de índice, tipo de índice ou partições de índice no Editor rápido. Eles assumirão os valores padrão quando você criar um índice. No entanto, você pode alterar essas configurações usando o Editor padrão e, posteriormente, editar a definição do índice usando o Editor rápido, desde que o params.mapping e params.doc_config da definição do índice não são alteradas no Editor padrão*.

*Esse comportamento pode mudar à medida que ampliarmos o suporte no Quick Editor.

Alterações no editor padrão

A primeira coisa que você pode notar que é diferente é uma nova caixa de seleção sob as entradas Index Name e Bucket, perguntando se você deseja configurar o índice para assinar um escopo não padrão ou uma coleção não padrão:

Add a full-text search index in Couchbase Server

Ativação dos prefixos da caixa de seleção escopo.coleção para o params.doc_config.mode dentro da definição do índice, o que implica que o índice pode assinar uma ou mais coleções de dentro de um escopo. Esse escopo.coleção O prefixo funciona em combinação com as configurações existentes campo_tipo, prefixo docid e docid_regexp para filtrar os documentos a serem indexados.

Se você verificar o Usar escopo/coleção(ões) não padrão é exibida uma lista suspensa. Nela, você pode selecionar um escopo entre os escopos disponíveis para o bucket escolhido:

Select a Scope in Couchbase full-text index editor

Agora, nos mapeamentos de tipo, você será solicitado a selecionar uma Coleção em um menu suspenso. (Observe que o mapeamento de tipo padrão deve ser desmarcado se você escolher uma seleção de escopo não padrão, pois uma definição de índice não pode transcender um escopo).

How to select a Collection in Couchbase Web Console

Depois de selecionar uma coleção, você tem a opção de anexar um nome de tipo ao campo . com base no identificador de tipo que você selecionou para filtrar os documentos a serem indexados na coleção. Você pode editar esse mapeamento de tipos a qualquer momento. E, assim como antes, você pode adicionar submapeamentos e campos filhos dentro do mapeamento de tipos.

Edit a document type mapping for a Couchbase full-text index

O restante da funcionalidade do Editor Padrão permanece inalterado.

Pesquisa em um índice de texto completo com reconhecimento de coleção

A interface do usuário para pesquisa em um índice de pesquisa de texto completo não foi alterada. A caixa de texto suporta apenas uma string de consulta. Veja esta página de documentação sobre outros tipos de consultas compatíveis com o índice de texto completo.

As solicitações de pesquisa que vão diretamente para o ponto de extremidade agora usam um novo argumento (opcional) para buscar apenas resultados de uma coleção ou de um conjunto de coleções que o índice de texto completo assina.

Aqui está um exemplo de solicitação de pesquisa:

Em o console da Web do CouchbaseNo entanto, você não pode definir o coleções para uma solicitação de pesquisa; a solicitação abrangerá o conteúdo indexado de todos Coleções às quais o índice se inscreve.

Vamos considerar um exemplo de definição de índice configurado usando o Quick Editor. Esse índice é assinante das coleções cerveja e cervejaria dentro do escopo conteúdo da caçamba padrão. Dentro dessas duas coleções, os campos de nome são indexados com as seguintes opções definidas:

    • Incluir no(s) resultado(s) da pesquisa
    • Destaque de suporte

Aqui está o conteúdo relevante da definição do índice:

Nos casos em que a definição do índice assina mais de uma coleção (como no exemplo acima) para uma pesquisa, a coleção à qual o documento pertence aparece como um campo armazenado com a chave _$c.

Aqui está um exemplo de snippet de resultados de pesquisa para a definição de índice de pesquisa de texto completo acima:

Full-text search results in Couchbase Web Console

Saiba mais sobre o Couchbase 7.0

Pronto para se aprofundar no Couchbase 7.0 e em todos os seus recursos? Dê uma olhada nestes recursos:

Pronto para experimentar Scopes e Collections por conta própria?Faça o download do Couchbase Server 7.0 hoje mesmo

 

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.