Jump to content


Photo

Buscar No Estilo Google...


  • Faça o login para participar
8 replies to this topic

#1 Ernanni

Ernanni

    12 Horas

  • Usuários
  • 122 posts
  • Sexo:Não informado

Posted 31/10/2008, 09:59

Suponha que o em um banco de dados MySQL temos o campo "texto", com os seguintes registros:

"Dúvida Busca PHP"
"Dúvida PHP"
"Dúvida PHP Busca"

Se buscarmos por "Dúvida Busca" utilizando LIKE %, ele retorna apenas o 1o. registro.

Como fazer para retornar o 1o. e o 3o. registros (por possuir ambas palavras), como o Google?

Obrigado.

#2 Magic Angel

Magic Angel

    Turista

  • Usuários
  • 59 posts
  • Sexo:Feminino

Posted 31/10/2008, 10:09

Nõ entendi mt bem... o LIKE serve para pegar apenas um determinado número de registros, de acordo com a ordem de sua busca...
se vc quer que apareça os 3 primeiros registros, vc coloca "LIKE 3" no final do seu SELECT...

Mas pelo que percebi, quer que apareça todos os resultados da sua busca, então não há razão para usar o LIKE.

Desculpe se não era esta a sua dúvida.
O mundo é grande, O mundo é grande e cabe,
nesta janela sobre o mar, o mar é grande e cabe,
Na cama e no colchão de amar, o amor é grande e cabe,
no breve espaço de beijar.

#3 Ernanni

Ernanni

    12 Horas

  • Usuários
  • 122 posts
  • Sexo:Não informado

Posted 31/10/2008, 10:24

Não, vc está confundindo LIKE com LIMIT.

O uso seria assim: "SELECT texto FROM tabela WHERE texto LIKE '%Dúvida Busca%'"

Edição feita por: Ernanni, 31/10/2008, 10:25.


#4 Magic Angel

Magic Angel

    Turista

  • Usuários
  • 59 posts
  • Sexo:Feminino

Posted 31/10/2008, 11:06

Uh!
Estava mesmo :ponder:

mas LIKE não restringe nº de resultados, man... .-.
O mundo é grande, O mundo é grande e cabe,
nesta janela sobre o mar, o mar é grande e cabe,
Na cama e no colchão de amar, o amor é grande e cabe,
no breve espaço de beijar.

#5 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 31/10/2008, 11:09

Você pode substituir cada espaço vazio por um sinal de porcentagem, o que determinaria um "coringa" para a sua pesquisa.

[]'s Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#6 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 31/10/2008, 12:18

Acho que pra resolver 100% você vai ter que dar um explode enssa string pelo caractere de espaço e adicionar um LIKE para cada ocorrência do explode, ficando assim:
SELECT texto FROM tabela WHERE texto LIKE '%Dúvida%' AND texto LIKE '%Busca%'

Dessa maneira a query encontra o registro mesmo que você inverta a ordem das palavras na pesquisa (y)

Edição feita por: boirock, 31/10/2008, 12:18.


#7 Ernanni

Ernanni

    12 Horas

  • Usuários
  • 122 posts
  • Sexo:Não informado

Posted 31/10/2008, 13:59

Hummm... Interessante.
Agora se essa busca for em mais de um campo com OR, tô lascado, né? rs

Valeu!

#8 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 31/10/2008, 14:19

Que nada cara :)
Pense na sua query como uma expressão matemática! Isole os conjuntos entre parenteses...
WHERE A = 1 OR B = 2 OR (C = 3 AND D = 4)
Tem coisas que você resolve mais rapidamente no teste de mesa do que direto no PC ;)

#9 Ernanni

Ernanni

    12 Horas

  • Usuários
  • 122 posts
  • Sexo:Não informado

Posted 03/11/2008, 11:11

Vc tem razão!

Tks, cara. Vou testar!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq