Sem categoria

JSON faz distinção entre maiúsculas e minúsculas. Você não precisa fazer isso.

Um RoSe em qualquer outro caso teria o mesmo cheiro. William Shakespeare

Você deve ter aprendido regras de capitalização em sua escola de gramática, mas a pesquisa no mundo real não é tão sensível à capitalização. Charles de Gaulle usa letra minúscula para o "de" do meio, Tony La Russa usa letra maiúscula para "La" - pode haver razões etimológicas para isso, mas é improvável que seu agente de atendimento ao cliente se lembre.   Os bancos de dados têm uma variedade de sensibilidades. O SQL, por padrão, não diferencia maiúsculas de minúsculas para identificadores e palavras-chave, mas diferencia maiúsculas de minúsculas para dados. O JSON diferencia maiúsculas de minúsculas para nomes de campos e dados. O mesmo acontece com o N1QL. O JSON pode ter o seguinte. O N1QL selecionará cada campo e valor como um campo e valor distintos.

Neste artigo, discutiremos como lidar com sensibilidade dos dados a maiúsculas e minúsculas. Suas referências de campo ainda são diferencia maiúsculas de minúsculas. Se você usar a caixa incorreta para o nome do campo, o N1QL assumirá que se trata de um campo ausente e atribuirá o valor MISSING a esse campo.

Vamos considerar um predicado simples no N1QL para pesquisar todas as permutações de casos.

Isso requer sete pesquisas diferentes no índice. "John" requer mais pesquisas no índice e "Fitzerald" requer ainda mais. Há uma maneira padrão de fazer isso. Basta criar um índice diminuindo o case do campo e o literal.

Essa pesquisa pode ser agilizada com a criação do índice com a expressão correta.

Certifique-se de que sua consulta esteja pegando o índice correto e empurre o predicado para a varredura do índice. E essa é a ideia. As consultas que têm predicados enviados para a varredura de índice são executadas muito mais rapidamente do que as consultas que não têm. Isso é verdadeiro para predicados e verdadeiro para pushdown agregado também.

Insensibilidade de casos em um cenário de índice composto.

Insensibilidade a maiúsculas e minúsculas em funções de matriz.

Funções de cadeia de caracteres como SPLIT(), SUFFIXES(), muitos dos funções de matriz e funções de objeto retornam matrizes. Então, como usá-los de maneira que não diferencie maiúsculas de minúsculas?

Seguimos o mesmo princípio de antes. Crie uma expressão para reduzir os valores a minúsculas antes de processá-los por meio dessas funções. 

Agora, o que você realmente deseja é filtrar com base em um valor dentro da cadeia de caracteres.

Esse é provavelmente o pior predicado do SQL, em termos de desempenho.

Agora, que índice você criaria para isso?  CONSELHO é útil.

Como sempre, verifique sua explicação.

Se você quiser fazer UNNEST e tiver uma cláusula WHERE simples, use esta consulta. Sempre verifique sua explicação para garantir que os predicados sejam enviados para a varredura do índice.

Uso de tokens 

A função TOKENS() simplifica a obtenção de letras minúsculas ao usar essa opção como argumento. Consulte o artigo Mais do que LIKE: Pesquisa eficiente de JSON com N1QL para obter detalhes e exemplos

Expressões complexas.

Como poderíamos otimizar isso? O Index Advisor veio em socorro. Novamente.

Explique para confirmar o plano:

Trazendo as grandes armas: pesquisa de texto completo

Como você percebeu, esse é um problema de processamento e consulta de texto. O FTS pode digitalizar, armazenar e pesquisar textos de várias maneiras. A pesquisa sem distinção entre maiúsculas e minúsculas é uma delas. Vamos ver o plano de uma consulta de pesquisa simples.

Esse NÃO é o plano que você deseja... Isso é usar um exame primário!

Depois de criar o índice de texto no cliente do balde, as coisas ficaram muito melhores:

O analisador padrão padrão reduz todos os tokens e, portanto, você encontrará todos os "joe "s : JOE, joe, Joe, JOe, etc. Você pode definir um analisador personalizado e fornecer instruções específicas para reduzir os tokens. Aqui está um exemplo.

Veja como adicioná-lo na interface do usuário. Ver blog fino 8 maneiras de personalizar os índices do Couchbase Full-Text Search para obter detalhes sobre as várias maneiras de personalizar o índice FTS.

 

 

 

 

 

 

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

Autor

Postado por Keshav Murthy

Keshav Murthy é vice-presidente de P&D da Couchbase. Anteriormente, ele trabalhou na MapR, IBM, Informix e Sybase, com mais de 20 anos de experiência em design e desenvolvimento de bancos de dados. Ele liderou a equipe de P&D de SQL e NoSQL na IBM Informix. Ele recebeu dois prêmios President's Club na Couchbase e dois Outstanding Technical Achievement Awards na IBM. Keshav é bacharel em Ciência da Computação e Engenharia pela Universidade de Mysore, Índia, e recebeu vinte e quatro patentes nos EUA.

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.