Recherche dans une base sql ?

Recherche dans une base sql ? - PHP - Programmation

Marsh Posté le 16-07-2004 à 00:40:12    

Voila, j'ai une base SQL avec plusieurs données ...  
Il est possible de faire plusieurs types de recherche.  
 
Comment faire une recherche intelligente ?  
 
je m'explique : j'ai comme donnée Tupac, un utilisateur recherche 2pac  
 
Je voudrais que la base renvoie la bonne réponse.  
 
Comment faire ?  
 
merci

Reply

Marsh Posté le 16-07-2004 à 00:40:12   

Reply

Marsh Posté le 16-07-2004 à 00:45:22    

c'est pas possible ça (simplement)
 
tu peux faire un LIKE '%pac%' qui va te sortir les bonnes infos. par contre 2pac [:spamafote]...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 16-07-2004 à 00:51:38    

Un like...

Reply

Marsh Posté le 16-07-2004 à 01:11:42    

lis le topic stp (encore une fois)
 
il veux taper "2pac" et que la requête lui retourne "tupac"
 
ça va un peu plus loin qu'un simple like...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 16-07-2004 à 01:16:32    

Clair .. mais le problème, c'est qu'il devrait alors carément gérer une table de correspondances de phonèmes même si il n'y a aucun rapport "grammatical" !
Paske "tu" et "2" ... c'est un peu comme si je voulais un résultat identique pour une recherche sur "infARCtuc" et "infRACtus" !!!

Reply

Marsh Posté le 16-07-2004 à 01:49:01    

Tupas et 2pac c'etait un exemple.
 
Je veux juste que si l'utilisateur n'est pas sur de l'orthographe ca ne poses pas de problème.
 
exemple: titre de chanson
- here's my love
- here is my love
 
exemple: Artiste
- Ghostface killa
- Ghostface killah's
 
le problème du LIKE c'est que je ne sais pas à l'avance quel va etre la recherche.
 

Code :
  1. $artist = trim(htmlspecialchars(addslashes($_POST["search"])));
  2. $sql="SELECT * FROM song WHERE artist = '$artist'";
  3.   $req=mysql_query($sql);


Message édité par peemousse le 16-07-2004 à 01:53:44
Reply

Marsh Posté le 16-07-2004 à 02:00:18    

Bon ben si tu ne veux pas gérer une table de "potentielles" correspondances, peut-être que tu devrais te pencher sur les possibilités des expressions régulières de ton serveur SQL ...

Reply

Marsh Posté le 16-07-2004 à 02:08:34    

il y a également des moyens géniaux pour rechercher des mots dans une base sql... on peut utiliser des fonctions comme SOUNDEX (que je trouve personnellement génial !!!!)

Reply

Marsh Posté le 16-07-2004 à 02:09:56    

je comprends pas bien la notion de potentielles corespondance ?
 
Sinon tu penses que vu les exemples que j'ai donnée ca demande beaucoup de travail ?
 
Edit: en fait je crois qu'il faudrait faire un truc comme  
 
SELECT * FROM song where artist "contient au moins un mot" de '$artist'


Message édité par peemousse le 16-07-2004 à 02:21:14
Reply

Marsh Posté le 16-07-2004 à 11:38:14    

Bon een fait je pense que le FULLTEXT ca va suffire; J'ai indéxé mes champs artistes, titles et albums...
 
Je vais testé on verra :)

Reply

Marsh Posté le 16-07-2004 à 11:38:14   

Reply

Marsh Posté le 16-07-2004 à 11:44:17    

au pire, tu fais un champ que tu n'affiche jamais, ou tu stock es les clés alternatives du style
 
nom_artiste : tupac
detail : bla bla bla
key : 2pac twoPac


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 16-07-2004 à 12:35:26    

JagStang a écrit :

au pire, tu fais un champ que tu n'affiche jamais, ou tu stock es les clés alternatives du style
 
nom_artiste : tupac
detail : bla bla bla
key : 2pac twoPac


 
He he ben c'est ça que j'appellais des -"potentielles" correspondances- ! :p  

Reply

Marsh Posté le 16-07-2004 à 13:21:56    

ok j'avais pas compris :jap:


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 18-07-2004 à 04:57:52    

Vu dans un autre topic ( mais sorry, je sais plus lequel ) ... ça peut peut-être t'aider :
fonction soundex

Reply

Marsh Posté le 18-07-2004 à 09:48:48    

JagStang a écrit :

c'est pas possible ça (simplement)
 
tu peux faire un LIKE '%pac%' qui va te sortir les bonnes infos. par contre 2pac [:spamafote]...


y'a pas un &quivalent à SOUNDEX d'oracle sous MySQL ?
 
Car logiquement, si l'équivalent existe, il devrait être capable de faire le lien entre "tupac" et "2pac", car en anglais la prononciation des deux est similaire.

Reply

Marsh Posté le 18-07-2004 à 09:50:54    

allopassxp a écrit :

il y a également des moyens géniaux pour rechercher des mots dans une base sql... on peut utiliser des fonctions comme SOUNDEX (que je trouve personnellement génial !!!!)


arf, grillé :jap:

Reply

Marsh Posté le 18-07-2004 à 12:34:20    

allopassxp a écrit :

il y a également des moyens géniaux pour rechercher des mots dans une base sql... on peut utiliser des fonctions comme SOUNDEX (que je trouve personnellement génial !!!!)


 
argh ! grillé aussi ! :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed