Consulta ou pesquisa – por que não ambas?

(16 de outubro de 2020)

Dia 2 de participação no Evento Couchbase Connect e, como prometido em, mergulho um pouco mais em algumas das atualizações de consulta N1QL que afetam a pesquisa de texto completo.

Como um aparte, eu costumava trabalho na Couchbase e foi o gerente de produto que lançou o produto Full-Text Search – por isso estou perto do meu coração agora. É por isso que estou fazendo minha palestra sobre “Pesquisa de texto simplificada” na sexta-feira no mesmo evento. Mais sobre isso no final deste artigo.

A pesquisa de texto completo (FTS também conhecida como Pesquisa) é um tópico à parte, mas tudo que você precisa saber para este artigo é que é um serviço ou conjunto separado de recursos do serviço de consulta N1QL SQL do Couchbase. Semelhante aos bancos de dados relacionais, o N1QL alavanca um conjunto de índices conhecido como Global Secondary Indexing (GSI).

O serviço Couchbase Search tem seu próprio conjunto de índices e permite uma pesquisa mais flexível, com reconhecimento de linguagem poderoso, para texto dentro de campos ou objetos em documentos JSON.

Binh Les talk Flex Index – Alavancar pesquisa com predicado SQL padrão sem limitação de consulta ​​em > mergulha nos recursos do N1QL que permitem que uma consulta use índices GSI ou FTS, dependendo da necessidade. Este é um novo recurso interessante e há duas maneiras de acessá-lo.

Os slides abaixo são da palestra de Binh – veja a palestra completa para um mergulho mais profundo e alguns exemplos ao vivo.

Os aplicativos podem escolher usar pesquisa de texto completo ou consultas baseadas em GSI

N1QL com função de predicado de pesquisa

A primeira maneira de alavancar um índice FTS de uma pesquisa N1QL é adicionando um SEARCH () predicado para a cláusula WHERE . Esta ilustração mostra as várias maneiras de consultar os serviços Couchbase – fornecendo um único ponto de entrada, dependendo do caso de uso.

# 3 no gráfico acima mostra a chamada N1QL para a função SEARCH:

WHERE… SEARCH (indexName, text to search for )

Isso limitará os resultados a correspondências entre todos os predicados na cláusula WHERE e documentos que tenham uma corresponder para a pesquisa. Ele usa os recursos de consulta de texto FTS mais básicos, mas é intencionalmente simples.

N1QL com Dica de Índice

A abordagem alternativa é mostrada no slide de Binh no canto inferior direito. A propósito, este slide é um ótimo resumo das abordagens em outros bancos de dados e produtos de pesquisa.

No caso de sugestão de índice, uma simples declaração na cláusula FROM é tudo que é necessário para alavancar os índices FTS existentes:

FROM crm USE INDEX (USANDO FTS)

Também poderia usar explicitamente (USANDO GSI) mas esse é o padrão, eu acredito.

Usando esta dica, o interpretador de consulta N1QL verificará se as colunas usadas no WHERE (por exemplo, título e tipo ) são indexados por FTS. Se sim, eles serão usados ​​em vez de quaisquer índices relacionados ao GSI – sem qualquer outra entrada necessária.

Observe que os campos em SELECT será automaticamente retirada da fonte do documentos e devolvidos ao usuário sem ter que fazer uma segunda chamada de seu aplicativo.

Pesquisa de prefixo com LIKE predicados, intervalos de datas, intervalos numéricos e muito mais são suportados por esta abordagem e convertidos em consultas FTS poderosas nos bastidores. Consulte a postagem abrangente do blog de Binh para obter mais detalhes.

Como você usará isso?

O fluxo de trabalho é simples: indexe campos relevantes para pesquisa de texto e, em seguida, adicione a dica às suas consultas existentes. Isso é ótimo para prototipagem e teste com FTS. Você pode adicionar uma cláusula minúscula às suas consultas e não ter que alterar os aplicativos de forma substancial.

Então, se você perceber que deseja usar a pesquisa de texto em vez de N1QL, poderá ter uma ideia de como responsivo será. O objetivo do FTS é ser mais rápido e fornecer um conjunto rápido de partidas relevantes e marcadas.

Como alternativa, se você já está usando FTS para alimentar seus aplicativos, pode tentar tirar proveito das consultas N1QL, para que não precise fazer uma chamada separada para recuperar valores de campo de documentos correspondentes.

Por que isso é importante?

Cada empresa luta para manter um conjunto crescente de sistemas cada vez mais complexos. Sempre fui um defensor de uma abordagem de sistemas modulares que permite que os projetistas de sistema troquem / retirem diferentes componentes conforme necessário. No entanto, isso é realmente ideal apenas durante as fases de teste e desenvolvimento. Para o planejamento de longo prazo, é altamente benéfico padronizar em um conjunto básico de recursos e integrar-se o mais firmemente possível.

O Couchbase visa fornecer uma plataforma geral para todos os valores-chave e necessidades de documentos – incluindo consultas , pesquisa de texto, análises, eventos, etc., tudo em uma plataforma distribuída de alto desempenho. Isso é mais do que apenas falar de marketing :). Essa consolidação de recursos permite que administradores e desenvolvedores se tornem especialistas em uma única plataforma, em vez de ter que aprender várias.

Se você pudesse reunir vários componentes do sistema em uma experiência unificada, acredito que você veria um impacto no seu TCO de maneiras que você não esperaria.

Acho que é importante e porque sou otimista neste tipo de integração N1QL / Pesquisa – bravo pela simplicidade!

Espero que você participe de minha palestra amanhã (dia 3 do evento) às 10:00 PDT – Pesquisa de texto simplificada – métodos e arquitetura onde faço uma introdução suave aos conceitos de pesquisa de texto completo e ajudo você a entender o geral arquitetura do serviço. Registre-se aqui .

Obrigado pela leitura!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *