recherche dans ma bdd, sans la faire peter [php] - PHP - Programmation
Marsh Posté le 16-09-2008 à 09:47:15
Il suffit de respecter la première règle de normalisation de E. Codd, qui veut qu'un champ ne contienne qu'une seule information atomique, et non pas deux ou n.
Pour cela, il n'est nécessaire que de remplacer "mot1... motn" dans le champ "motclé" par un lien_liste_mots. Ce lien serait une cléf étrangère vers une nouvelle table T_liste_mots, qui contiendrait donc le lien plus un numéro de séquence et un mot. A chaque nouveau mot, il y aurait un enregistrement nouveau dans cette table. Cette table n'a pas besoin d'être visible de l'utilisateur. C'est juste une organisation interne de la base.
Bon courage !
Marsh Posté le 16-09-2008 à 10:01:18
l'approche d'ovithill ets la plus propre, masi pour eviter de reinventer la roue, tu peux utiliser des outils spécifiques de recherche full text ( comem sphinx ou solr ) qui prendront , en plus , en compte les declinaisons des mots
sinon, l'approche bourrine
Code :
|
Marsh Posté le 16-09-2008 à 12:33:14
flo850 a écrit : l'approche d'ovithill ets la plus propre, masi pour eviter de reinventer la roue, tu peux utiliser des outils spécifiques de recherche full text ( comem sphinx ou solr ) qui prendront , en plus , en compte les declinaisons des mots sinon, l'approche bourrine
|
OR, pas AND, si tu veux gérer tous les cas.
(enfin en remplaçant le where 1, du coup.)
Marsh Posté le 16-09-2008 à 13:56:38
skeye a écrit : |
nan pas dans FloMyAdmin
Marsh Posté le 16-09-2008 à 14:07:34
ok, je viens de realiser que n'importe quel systeme fait peter la bd en nombre de resultats si l'utilisateur tape par exemple "z 750",
bah ca cherche un z dans la description, donc ya enormement de resultats,
avec like, je peut faire des expression regulieres "avancées" ?
pour dire que je recherche z, mais pas entouré d'autres lettres, juste entouré d'espaces, de points, de virgules ...
/me suis ptet mal expliqué
Marsh Posté le 16-09-2008 à 14:09:04
NewsletTux a écrit : |
hein?
Marsh Posté le 16-09-2008 à 14:09:50
tomsoft a écrit : ok, je viens de realiser que n'importe quel systeme fait peter la bd en nombre de resultats si l'utilisateur tape par exemple "z 750", |
Tu peux donner un minimum de taille pour ce qui est considéré comme un mot.
Marsh Posté le 16-09-2008 à 14:11:15
oui effectivement, mais "z 750" est un modele de moto en l'occurence, je voudrais quand meme afficher les produits contenant "z" tout seul, meme si ca ne fait qu'un charactere
Marsh Posté le 16-09-2008 à 14:12:14
tomsoft a écrit : oui effectivement, mais "z 750" est un modele de moto en l'occurence, je voudrais quand meme afficher les produits contenant "z" tout seul, meme si ca ne fait qu'un charactere |
non, tu veux afficher ceux contenant "z 750", pas ceux contenant "z" ou "750"...
Marsh Posté le 16-09-2008 à 14:18:23
skeye a écrit : |
j'ai effectivement mal compris la question
Marsh Posté le 16-09-2008 à 15:33:06
skeye a écrit : |
non, je veut afficher ceux contenant z et ceux contenant 750, mais considerés comme des mots, ainsi l'article :
"blabla z bla" sortirai,
"blablaz bla" ne sortirai pas
Marsh Posté le 15-09-2008 à 22:53:52
imaginons une table article, avec un champ description contenant du code html
imaginons un formulaire de recherche, avec un champ mot clé,
si ce champ contient un mot, appelons le "motclé",
ok :
mais si motclé = 'mot1 mot2',
moi je veut rechercher en priorité ceux qui ont les deux a la suite, et apres les deux mots pas forcement qui se suivent ni dans le meme ordre, et apres ceux qui ont l'un ou l'autre.
ok pour deux mots clés c'est gerable,
mais pour n mots clés ?
j'envoi chier le client ?