Jump to content


Photo

Busca Plural


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

#1 PHP-man

PHP-man

    12 Horas

  • Usuários
  • 257 posts
  • Sexo:Masculino

Posted 09/08/2007, 14:34

Olá, tenho um sistema de busca funcionando legalzinho e simplinho ehehe....

O problema é que eu queria dar uma turbinada nele, algo simples. Uma das coisas que poderia melhorar é por exemplo:

No cadastro de produtos tenho um produto que se chama "Lixeira Inox Alamo".

Se eu procurar no sistema por lixeira, ele mostra o resultado, porém se eu digitar na busca "lixeiras", ele não mostra nada. O duro é que com certeza a maioria dos usuários buscaria por lixeiras e não por lixeira.


Minha query ta assim:
$busca = mysql_query("SELECT * FROM prod_produtos WHERE produto LIKE '%".$palavra."%' ORDER BY produto LIMIT $primeiro_registro, $num_por_pagina");

Alguém pode dar uma ajuda???

Pensei no seguinte, se eu tiver uma função que pegue um determinado número de caracteres de uma VARIAVEL, posso fazer assim:
$busca = mysql_query("SELECT * FROM prod_produtos WHERE produto LIKE '%".$palavra."%' OR produto LIKE '%".$palavraquebrada."%' ORDER BY produto LIMIT $primeiro_registro, $num_por_pagina");

Onde a VAR $palavraquebrada receberia por exemplo os 5 primeiros carcteres da VAR $palavra. Se minha lógica tiver muito tosca por favor me dem alguma sugestão, pois isso foi ua solução que tive hoje.

Vlw Galera!

Edição feita por: PHP-man, 09/08/2007, 14:35.

Existe uma grande diferença entre a Sabedoria e a Inteligência. A Inteligência vem acompanhada de Arrogância e Irônias. A Sabedoria vem acompanhada de Humildade e Paciência. by PHP-man

#2 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 09/08/2007, 14:55

Para quebrar a string use substr();

Uma ajudinha extra: http://br.php.net/ma...imilar-text.php
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#3 PHP-man

PHP-man

    12 Horas

  • Usuários
  • 257 posts
  • Sexo:Masculino

Posted 09/08/2007, 18:33

Valew mesmo "bimonti", foi de grande ajuda!

Fiz substr por enquanto, vou postar aqui como fiz para caso alguem leigo como sou hoje precise tbm.

$palavra = $_POST['txbusca'];
$similar = substr($palavra, 0, 5);

$busca = mysql_query("SELECT * FROM prod_produtos WHERE produto LIKE '%".$palavra."%' OR produto LIKE '%".$similar."%' ORDER BY produto LIMIT $primeiro_registro, $num_por_pagina");

Aquele outra similar_text vou dar uma estudada, pois parece mais complexa e quero fazer bastante teste com ela.

T+

Edição feita por: PHP-man, 09/08/2007, 18:34.

Existe uma grande diferença entre a Sabedoria e a Inteligência. A Inteligência vem acompanhada de Arrogância e Irônias. A Sabedoria vem acompanhada de Humildade e Paciência. by PHP-man

#4 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 09/08/2007, 19:06

Não era bem isso que eu te indiquei:

$foo = substr($_POST['txbusca'], 0, -3);
$busca = mysql_query("SELECT * FROM prod_produtos WHERE produto LIKE '%".$foo."%'  ORDER BY produto LIMIT $primeiro_registro, $num_por_pagina");

Use o -3 para retirar somente os últimos 3 caracteres, que normalmente é suficiente para plural, se quiser aumente de acordo.

E busque somente pelo texto cortado, depois você aplica o similar_text() nos resultados, assim ele te devolve uma porcentagem dos resultados mais erlevantes, dá até pra colocar a sua busca assim:

Possíveis resultados:
1. Palavra (100% de relevancia).
2. Palavra2 (83% de relevancia).
1. Palavra3 (54% de relevancia).
Etc.

Sacou ?!
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...




1 user(s) are reading this topic

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

IPB Skin By Virteq