Exemplos de pesquisa de texto completo PostGresql

Exemplos de pesquisa de texto completo 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 de todos os artesanatos. Ele combina todas as coisas que você amou com o 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 do JSONB, são fantásticas e você nem precisaria 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 é completamente funcional, ou você deseja um índice de pesquisa distinto? Se você puder de alguma forma desenvolver uma pesquisa completa de texto privado de adicionar mais uma cobertura 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 da linha de comando postgreSQL em seu sistema de computador. Escreva o título do servidor, nome do banco de dados, número da porta, nome de usuário e senha para o usuário específico que não seja opções padrão. Se você precisar servir com considerações padrão, deixe todas as opções em branco e pressione Enter cada opção. No momento, seu shell da linha de comando está equipado para trabalhar em.

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

>> selecione * da pessoa;

Suponhamos que você queira buscar os registros desta tabela, onde a coluna 'nome' tem um personagem 'i' em qualquer um de seus valores. Experimente a consulta selecionada abaixo enquanto usa a cláusula semelhante na concha de comando. A partir da saída abaixo, você pode ver que temos apenas 5 registros para esse personagem em particular 'i' na coluna 'nome'.

>> Selecione * da pessoa em que o nome como '%i%';

Uso do TVSector:

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

  • To_tvSector: Usado para fazer uma lista de tokens (TS significa "pesquisa de texto").
  • To_tsQuery: Usado para pesquisar no vetor por incidências de termos ou frases específicas.

Exemplo 01:

Vamos começar com uma ilustração simples de criar um vetor. Suponha que você queira fazer um vetor para a corda: “Algumas pessoas têm cabelos castanhos encaracolados através da escovação adequada.”. Então você deve escrever uma função to_tvSector () junto com esta frase entre colchetes de uma consulta selecionada, conforme anexado abaixo. A partir da saída abaixo, você pode ver que ele produziria 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.

>> selecione To_TSVector ('Algumas pessoas têm cabelos castanhos encaracolados através da escovação adequada');

Exemplo 02:

Suponha que você tenha dois documentos com alguns dados em ambos. Para armazenar esses dados, agora estaremos usando 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 de tabela Create abaixo. Não se esqueça de criar uma coluna do tipo TVSector chamada 'Token'. A partir da saída abaixo, você pode dar uma olhada na mesa que foi criada.

>> Crie dados da tabela (chave primária de identificação, texto de informações, token tsvector);

Agora, se volta para adicionar os dados gerais de ambos os documentos nesta tabela. Portanto, tente o comando inserir abaixo no seu shell da linha de comando para fazê-lo. Finalmente, os registros de ambos os documentos foram adicionados com sucesso na tabela 'dados'.

>> Insira os valores de dados (info) ('dois erros nunca podem fazer um certo.'), (' Ele é quem pode jogar futebol.'), (' Posso desempenhar um papel nisso?'), (' A dor dentro de um não pode ser entendida '), (' Traga pêssego em sua vida);

Agora você tem que colonizar a coluna de token de ambos os documentos com seu vetor específico. Por fim, uma simples consulta de atualização preencherá a coluna Tokens por seu vetor correspondente para cada arquivo. Então, você tem que executar a consulta declarada abaixo na casca de comando para fazer isso. A saída está mostrando que a atualização foi finalmente feita.

>> Atualize os dados f1 definido token = to_tsvector (F1.info) a partir de dados f2;

Agora que temos tudo no lugar, vamos voltar à nossa ilustração de "Can One" com uma varredura. To_tsQuery com e operador, como dito anteriormente, não faz diferença entre os locais dos arquivos nos arquivos, como mostrado da saída declarada abaixo.

>> Selecione ID, informações de dados onde token @@ to_tsquery ('Can & um');

Exemplo 04:

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

>> Selecione ID, informações de dados onde token @@ to_tsquery ('Can One');

Aqui está um exemplo de nenhuma palavra imediata ao lado de outro.

>> Selecione ID, informações de dados onde token @@ to_tsquery ('One Pain');

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 referenciar a distância. A proximidade entre 'Bring' e 'Life é 4 palavras além da imagem exibida.

>> Selecione * FROM dados onde token @@ to_tsquery ('traga vida');

Verificar a proximidade entre as palavras por quase 5 palavras é anexado abaixo.

>> Selecione * FROM dados onde token @@ to_tsquery ('errado certo');

Conclusão:

Por fim, você fez todos os exemplos simples e complicados de pesquisa de texto completo usando os operadores e funções TO_TVSECTOR e TO_TSQUERY.