Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JonatasFn

Pesquisar dentro de campo tipo Text

Recommended Posts

É o seguinte tenho uma Table no MySQL, onde tenho um campo tipo Text, que é inserido através de um Memo.

A minha dúvida é: preciso pesquisar dentro deste texto.

 

Tipo assim, pesquisar o texto não integralmente, na pesquisa comum se tenho o texto:

 

ASSIM CAMINHA A HUMANIDADE, COM PASSOS DE FORMIGA E SEM VONTADE.

 

Só vou conseguir encontrar o texto se digitar somente uma palavra ou parte do texto, tipo: "%PASSOS DE FORMIGA%".

 

O que eu quero é que se pesquisar por: "A FORMIGA CAMINHA SEM HUMANIDADE" ele encontre o texto acima, pois todas estas palavras estão no texto. Entendo que os textos são diferentes, mas as palavras existem dentro do primeiro texto.

 

Parece maluquisse(e pode ser mesmo), mas existe alguma forma de pesquisar assim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que para isso você não vai conseguir usar o like com a frase inteira digitada, mas sim terá que quebrar a expressão em várias partes e montar o like dinamicamente usando or ou and para retornar os dados, algo do tipo....

 


campo like '%FORMIGA%' and campo like '%CAMINHA%' and campo like'%HUMANIDADE%'

Seria algo +/- assim.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que para isso você não vai conseguir usar o like com a frase inteira digitada, mas sim terá que quebrar a expressão em várias partes e montar o like dinamicamente usando or ou and para retornar os dados, algo do tipo....

 


campo like '%FORMIGA%' and campo like '%CAMINHA%' and campo like'%HUMANIDADE%'

Seria algo +/- assim.

 

[]'s

 

A idéia é muito boa Chrnos, o problema é que o meu usuário irá digitar uma frase inteira.

Pra ser mais exato, é um sistema de sugestões, e o usuário irá digitar a sugestão, só que eu queria comprar com as sugestões que estão no BD.

 

 

Tipo assim, as sugestões:

- Pintar o refeitório de amarelo.

e

- Pintar de amarelo o refeitório.

 

Pra nós é fácil entender que é a mesma coisa, mas para o sistema são duas coisas diferentes.

Por isso é que eu queria pesquisar por termos.

 

Complexo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que para o BD, as duas expressões são coisas totalmente distintas, apesar de terem as palavras passadas em comum, afinal de contas, se comparar logicamente 'Pintar o refeitório de amarelo' e 'Pintar de amarelo o refeitório' são expressões distintas... qual é a idéia do que eu sugeri: no seu código, você montaria uma procedure que quebraria a frase em várias strings menores e depois com elas montaria seu comando sql... como ponto de controle de quebra, você poderia usar os espaços entre as palavras por exemplo... assim sendo, a idéia seria:

 

O usuário digita a frase: 'Pintar o refeitório de amarelo

A sua rotina pega esta frase e joga por exemplo num array de strings, separando as palavras e jogando cada uma em uma posição do array, ficando seu vetor (ou lista, que poderia ser a melhor solução por ser dinâmica e mais fácil de controlar na minha opinião) assim:

vetor[0] = Pintar

vetor[1] = o

vetor[2] = refeitório

vetor[3] = de

vetor[4] = amarelo

Com base nos dados lidos, você montaria seu sql dinâmicamente varrendo o vetor e montando os likes com as palavras repassadas na frase de pesquisa, retornando todas possibilidades que existissem com elas, sacou?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi... muito boa sua solução.

 

Vou ver qual é a real necessidade disto, pois acho que não será 100% preciso.

Pois acho que ele irá obter n resultados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.