JonatasFn 0 Denunciar post Postado Outubro 31, 2009 É 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
Chrnos 30 Denunciar post Postado Novembro 3, 2009 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
JonatasFn 0 Denunciar post Postado Novembro 3, 2009 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
Chrnos 30 Denunciar post Postado Novembro 3, 2009 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
JonatasFn 0 Denunciar post Postado Novembro 3, 2009 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