PostgreSQL

Exemplos de pesquisa de texto completo do PostgreSQL

Exemplos de pesquisa de texto completo do PostgreSQL
Qualquer banco de dados deve ter uma capacidade de pesquisa eficaz e versátil. Sempre que se refere a bancos de dados, o PostgreSQL é um mestre em todos os ofícios. Ele combina todas as coisas que você aprendeu a amar com SQL com uma série de funcionalidades de banco de dados não SQL. Qualquer uma dessas funções não SQL, como a classificação de informações JSONB, são fantásticas e você nem teria que tentar um banco de dados diferente. A pesquisa de texto completo está entre os mais novos recursos não SQL incorporados ao PostgreSQL. A pesquisa de texto completo do PostgreSQL é totalmente funcional ou você gostaria de um índice de pesquisa distinto?? Se você pudesse de alguma forma desenvolver uma pesquisa de texto completa sem adicionar mais uma capa de código, seria uma ideia fantástica. Você já está familiarizado com a pesquisa de padrões no banco de dados MySQL. Então, vamos dar uma olhada neles primeiro. Abra o shell de linha de comando PostgreSQL em seu sistema de computador. Escreva o título do servidor, o nome do banco de dados, o número da porta, o nome de usuário e a senha do usuário específico, exceto as opções padrão. Se você precisar trabalhar com considerações padrão, deixe todas as opções em branco e pressione Enter para cada opção. No momento, seu shell de linha de comando está equipado para funcionar.

Para entender o conceito de pesquisa de texto completo, você deve recuperar o conhecimento de pesquisa de padrão por meio da palavra-chave LIKE. Então, vamos supor uma tabela 'pessoa' no banco de dados 'teste' com os seguintes registros nele.

>> SELECIONE * DA pessoa;

Suponhamos que você queira buscar os registros desta tabela, onde a coluna 'nome' possui um caractere 'i' em qualquer um de seus valores. Tente a consulta SELECT abaixo enquanto usa a cláusula LIKE no shell de comando. Na saída abaixo, você pode ver que temos apenas 5 registros para este caractere particular 'i' na coluna 'nome'.

>> SELECT * FROM pessoa WHERE name LIKE '% i%';

Uso do Tvsector:

Às vezes não adianta usar a palavra-chave LIKE para fazer uma pesquisa rápida de padrão, embora a palavra esteja lá. Talvez você esteja pensando em usar expressões padrão e, embora esta seja uma alternativa viável, as expressões regulares são fortes e lentas. Ter um vetor procedural para palavras inteiras em um texto, uma descrição vernácula dessas palavras, é uma maneira muito mais eficiente de resolver esse problema. O conceito de pesquisa de texto completa e o tipo de dados tsvector foi criado para responder a ele. Existem dois métodos no PostgreSQL que fazem exatamente o que queremos:

Exemplo 01:

Vamos começar com uma ilustração simples da criação de um vetor. Suponha que você queira fazer um vetor para o barbante: “Algumas pessoas têm cabelos castanhos cacheados por meio de uma escovação adequada.”. Então você tem que escrever uma função to_tvsector () junto com esta frase nos colchetes de uma consulta SELECT conforme anexado abaixo. A partir da saída abaixo, você pode ver que geraria um vetor de referências (posições de arquivo) para cada token, e também onde termos com pouco contexto, como artigos (o) e conjunções (e, ou), são deliberadamente ignorados.

>> SELECT to_tsvector ('Algumas pessoas têm cabelos castanhos cacheados com a escovação adequada');

Exemplo 02:

Suponha que você tenha dois documentos com alguns dados em ambos. Para armazenar esses dados, agora usaremos um exemplo real de geração de tokens. Suponha que você tenha criado uma tabela 'Dados' em seu banco de dados 'teste' com algumas colunas usando a consulta CREATE TABLE abaixo. Não se esqueça de criar uma coluna do tipo TVSECTOR chamada 'token' nele. A partir da saída abaixo, você pode dar uma olhada na tabela que foi criada.

>> CREATE TABLE Data (Id SERIAL PRIMARY KEY, info TEXT, token TSVECTOR);

Agora, cabe a nós adicionar os dados gerais de ambos os documentos nesta tabela. Portanto, tente o comando INSERT abaixo em seu shell de linha de comando para fazer isso. Finalmente, os registros de ambos os documentos foram adicionados com sucesso à tabela 'Dados'.

>> INSERT INTO Data (info) VALUES ('Dois erros nunca podem tornar um certo.'), (' Ele é aquele que pode jogar futebol.'), (' Posso desempenhar um papel neste?'), (' A dor dentro de alguém não pode ser compreendida '), (' Traga pêssego em sua vida);

Agora você deve colonizar a coluna de token de ambos os documentos com seu vetor específico. Em última análise, uma consulta UPDATE simples preencherá a coluna de tokens por seu vetor correspondente para cada arquivo. Então, você tem que executar a consulta indicada abaixo no shell de comando para fazer isso. O resultado está mostrando que a atualização foi finalmente feita.

>> ATUALIZAR Dados f1 SET token = to_tsvector (f1.info) FROM Data f2;

Agora que temos tudo no lugar, vamos retornar à nossa ilustração de "alguém pode" com uma digitalização. To_tsquery com o operador AND, como dito anteriormente, não faz diferença entre as localizações dos arquivos nos arquivos, conforme mostrado na saída declarada abaixo.

>> SELECT Id, info FROM Data WHERE token @@ to_tsquery ('can & one');

Exemplo 04:

Para encontrar palavras que estão "próximas" uma da outra, tentaremos a mesma consulta com o '<->'operador. A mudança é exibida na saída abaixo.

>> SELECIONE Id, informação de dados WHERE token @@ to_tsquery ('pode <-> 1');

Aqui está um exemplo de nenhuma palavra imediata próxima a outra.

>> SELECIONE Id, informação de dados WHERE token @@ to_tsquery ('um <-> dor');

Exemplo 05:

Encontraremos as palavras que não estão imediatamente próximas uma da outra usando um número no operador de distância para fazer referência à distância. A proximidade entre 'trazer' e 'vida é de 4 palavras além da imagem exibida.

>> SELECT * FROM Data WHERE token @@ to_tsquery ('trazer <4> vida');

Para verificar a proximidade entre as palavras por quase 5 palavras está anexado abaixo.

>> SELECT * FROM Data WHERE token @@ to_tsquery ('errado <5> direito');

Conclusão:

Finalmente, você executou todos os exemplos simples e complicados de pesquisa de texto completo usando os operadores e funções To_tvsector e to_tsquery.

O botão do meio do mouse não funciona no Windows 10
O botão do meio do mouse ajuda você a percorrer longas páginas da web e telas com muitos dados. Se isso parar, você vai acabar usando o teclado para r...
Como alterar os botões esquerdo e direito do mouse no PC com Windows 10
É normal que todos os dispositivos de mouse de computador sejam ergonomicamente projetados para usuários destros. Mas existem dispositivos de mouse di...
Emular cliques do mouse passando o mouse usando o mouse sem cliques no Windows 10
Usar um mouse ou teclado na postura errada de uso excessivo pode resultar em muitos problemas de saúde, incluindo tensão, síndrome do túnel do carpo e...