Pesquisa de texto completo

Como usar a pesquisa de texto completo em escopos e coleções do Couchbase

O Full-Text Search Service agora oferece Melhor desempenho de pesquisa e utilização de recursos em seu cluster com a introdução de escopos e coleções no Couchbase 7.0.

Vamos dar um rápido passo para trás: O Versão 7.0 do Couchbase Server apresenta o conceito de Escopos e coleções que permitem que você crie um namespace para os dados em um Bucket do Couchbase. Em vez de todos os JSON os documentos precisam residir em um único espaço de nome compartilhado, os escopos e as coleções oferecem um recurso interno para agrupar documentos, em vez de precisar adicionar atributos manuais como tipo em um documento.

Vamos explorar como você pode indexar e pesquisar os dados em seus escopos e coleções usando o serviço de pesquisa em Couchbase.

Como indexar dados para pesquisa em uma única coleção

O Serviço de pesquisa de texto completo (FTS) do Couchbase funciona exatamente da mesma forma que antes quando se trata de operar e definir novos índices em documentos que residem em um Bucket. Com Escopos e Coleções, todos os documentos existentes (pré-7.0) em um Bucket são classificados na categoria Padrão Escopo e Padrão Coleção. E os índices existentes continuam a indexar as mutações mais recentes e todas as consultas funcionam normalmente.

Depois que a sua equipe adotar Escopos e Coleções, os usuários do banco de dados começarão a colocar os documentos de vários esquemas em várias Coleções. Aqui estão as mudanças no Couchbase Full-Text Search com a versão 7.0.

O Search Service oferece suporte a criações de índices em uma única coleção de origem, bem como em várias coleções de origem, desde que todas as coleções pertençam a um único Escopo.

Essencialmente, o os índices de pesquisa podem se estender por várias coleções, mas não por vários escopos.

Exemplo: Pesquisa de texto completo com um CRM

Vamos nos aprofundar em mais detalhes com a ajuda de um exemplo.

Considere um caso de uso de CRM em que os detalhes do cliente são capturados em um arquivo Clientes Bucket e os detalhes do seu pedido em um Pedidos Balde.

Vamos supor que você tenha organizado vários clientes em diferentes Escopos com base nas regiões geográficas. Por exemplo, mapear todos os clientes da região Ásia-Pacífico para um escopo específico chamado apac e assim por diante.

O diagrama abaixo ilustra como você pode organizar seus Buckets, Scopes e Collections para seu CRM.

An example Scope and Collection hierarchy in Couchbase

Com as coleções, a indexação e a pesquisa de dados de uma única coleção de origem é o caso de uso mais comum e natural. Ele funciona de forma semelhante ao processo de criação de índice baseado em Bucket existente. A única diferença é que o usuário precisa especificar o escopo e os detalhes da coleção ao criar a definição do índice.

Se você estiver indexando o escopo e a coleção padrão em um bucket, então o etapas de criação do índice parecem exatamente iguais aos da época pré-Coleção.

Se quiser indexar um Escopo e/ou Coleção(ões) não padrão, você precisará marcar a caixa de seleção "Use non-default Scope/Collection(s)" na interface do usuário da Web do Couchbase. Depois de concluir essa etapa, o processo de criação do índice solicitará que você insira os detalhes do escopo e da coleção de origem, como no diagrama abaixo.

A non-default Scope/Collection(s) indexing process in the Couchbase Web UI

Depois de ativar a caixa de seleção Escopo/Coleção(ões) não padrão, você poderá escolher o Escopo de origem para os documentos (veja abaixo). Você pode observar que o menu suspenso Escopo agora lista todos os Escopos disponíveis no seu Bucket escolhido (o CRM, no nosso exemplo).

Scope drop downs

Como mostrado na captura de tela acima, você pode selecionar o escopo ao qual a coleção pertence na lista suspensa, conforme mostrado acima.

Especificação de mapeamentos de tipos

Depois de selecionar o Escopo, você estará pronto para especificar o tipo de documentos que deseja indexar.

A convenção é especificar o tipo de documentos sobre os mapeamentos de tipo, e esse mesmo padrão de definição de mapeamento de tipo continua aqui também. Ao adicionar um novo mapeamento de tipo, o usuário tem a opção de especificar a coleção de origem, conforme mostrado abaixo.

Collection type mappings

O usuário deve ser capaz de ver todas as coleções disponíveis no escopo mencionado anteriormente (por exemplo, emea) como uma lista suspensa, como acima.

Indexação de todos os tipos de documentos em uma determinada coleção

Você pode indexar todos tipo de documento em uma coleção, selecionando o nome da coleção na lista suspensa do nome do mapeamento de tipo. Veja um exemplo na imagem abaixo.

Collection dropdown for typemappings

Indexação de vários tipos de documentos em uma coleção

Se a coleção hospedar vários tipos de documentos, você poderá especificar qualquer número de nomes de mapeamento de tipos interessados seguidos pelo nome da coleção, conforme mostrado abaixo.

multiple Collection type mappings

O exemplo acima indexaria tipos de documentos como deptOrders e inventoryOrders da coleção cliente1 sob o escopo emea.

Notas de escala

Como os dados do seu Bucket agora são divididos em uma granularidade maior a partir de Escopos e Coleções, é mais provável que os documentos em cada uma de suas Coleções tenham uma cardinalidade menor.

Dependendo da especificidade de suas coleções, você pode não precisa usar as configurações de partição padrão do 6 por índice para alimentar um conjunto de dados menor.

Usar a contagem de partições apropriada para uma determinada quantidade de dados ajuda a dar suporte:

    • Melhor utilização dos recursos em um nó
    • Um número maior de índices em um determinado nó
    • Melhor desempenho da pesquisa

Como resultado, recomendamos que você explore a possibilidade de substituir a contagem de partições padrão por uma inferior durante o dimensionamento do cluster.

Notas sobre RBAC

Agora você pode administrar controle de acesso baseado em função (RBAC) para índices de pesquisa de texto completo em nível de Bucket, Escopo ou Coleção(ões).

Um usuário com pelo menos leitor de pesquisa no nível da Coleção de origem poderão acessar o índice de pesquisa de texto completo.

Como indexar dados para pesquisa em várias coleções

Os índices Multi-Collection ajudam os usuários a indexar e pesquisar em várias Collections dentro de um único escopo, tudo a partir de um único índice. Alguns casos de uso favoráveis a várias coleções incluem:

    • Os usuários dividiram os dados em várias coleções, em que cada coleção ou espaço de nome pode ser uma conta de cliente ou a marca de um produto etc. (ou seja, dados homogêneos em coleções).
    • Os usuários têm muitas coleções de tamanho relativamente pequeno em seu conjunto de dados devido ao particionamento lógico dos dados (ou seja, dados heterogêneos entre coleções).

Em todos esses casos, talvez seja necessário criar vários índices para permitir a pesquisa de texto completo em dados de várias coleções. No entanto, é uma tarefa complicada ter que criar e manter um número tão grande de índices.

É aí que entram os índices de várias coleções.

Os índices de várias coleções aliviam a sobrecarga, permitindo que você crie um índice geral que abranja várias coleções. Essas coleções podem conter dados homogêneos ou dados heterogêneos.

Especificação de mapeamentos de tipos

Na captura de tela abaixo, é possível ver a definição de mapeamentos de tipos para indexar tipos de dados heterogêneos de diferentes coleções, como cliente1, cliente2 e cliente3. Você também pode usar tipos de dados semelhantes de várias coleções, como customer1.travels e customer3.travels e similares.

Multiple Collection mapping for full-text search indexes

Notas sobre o ciclo de vida

Se alguma das coleções de origem for excluída em um índice de várias coleções, o índice também será excluído (!).

Portanto, os índices de várias coleções são mais adequados para coleções com vida útil semelhante.

Notas sobre RBAC

Na segurança do Couchbase RBAC, você deve ter leitor de pesquisa para todas as coleções de origem, a fim de acessar um índice de várias coleções.

Como pesquisar os dados em uma coleção usando a pesquisa de texto completo

Índice de coleção única: Você pode pesquisar e recuperar dados de um índice de coleção única da mesma forma que fazia antes com um índice baseado em Bucket.

Índice de várias coleções: Você pode pesquisar índices de várias coleções usando as mesmas solicitações de pesquisa antigas. Como um índice de várias coleções contém dados de várias coleções de origem, é útil saber a coleção de origem de seus resultados relevantes.

Com índices de várias coleções, cada acerto nos resultados da pesquisa contém informações sobre a coleção à qual pertence. Esse detalhe da coleção de origem está disponível na seção Campos seção de cada hit sob a chave _$c. Veja um exemplo na imagem abaixo.

multi-Collection index search results in Couchbase 7.0

Você também pode restringir suas solicitações de pesquisa de texto completo a apenas coleções específicas dentro do índice de várias coleções. Esse foco acelera suas pesquisas em um índice grande.

Abaixo está um exemplo de solicitação de pesquisa de coleções para coleções cliente1 e cliente3.

Notas de atualização

Você só pode aproveitar o suporte de coleções para o Full-Text Search Service em um cluster do Couchbase 7.0 totalmente atualizado.

Não é possível ativar o suporte do Collections para o FTS em um cluster de versão mista.

Conclusão

Espero que você goste de usar o Couchbase Full-Text Search Service com os novos recursos Scopes e Collections introduzidos na versão 7.0.

Se você quiser saber mais sobre o Couchbase Server 7, Confira o que há de novo e/ou As notas da versão 7.0.

Faça um teste com o Full-Text Search:
Experimente o Couchbase 7

 

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Author

Posted by Sreekanth Sivasankaran

Sreekanth Sivasankaran is a Principal Engineer/Senior Engineering manager at Couchbase R&D. He leads the design and development of distributed and highly performant Search functionality. And he has over 17 years of product development experience in various domains like telecom, handsets, enterprise software, big data technologies, and distributed systems.

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.