On Fri, 4 Nov 2011 11:20:26 +0100
h.wis...@free.fr wrote:

> mot clé (motcle) = "biographie richard stallman"
> 
> $query_string = "SELECT * FROM table WHERE infos LIKE '%$motcle%'  ";
> 
> Or, le nom "stallman" existe bien dans la base mais
> "biographie richard stallman" n'est pas contenu dans "stallman".
> 
> Comment faire alors le contraire, c'est à dire faire la recherche
> selon "stallman' contenu dans "biographie richard stallman" ?

Code symbolique:
SELECT * FROM table WHERE infos LIKE '%motcle1%' INTERSECT
        SELECT * FROM table WHERE infos LIKE '%motcle2%' INTERSECT
        SELECT * FROM table WHERE infos LIKE '%motcle3%';

Avec logiquement: motcle1='stallman', motcle2='biographie', motcle3='richard'.
(d'ailleurs est-ce que 'richard' est vraiment un critère puisque 'stallman'
est un nom peu répandu, et l'association 'stallman' & 'biographie' encore
moins...?)

Cependant, et quelque soit le moteur de DB, une recherche de type 'LIKE' est
loin d'être neutre en terme de perfs (puisqu'il va falloir systématiquement
que tout soit d'abord converti en minuscules avant la recherche proprement
dite).

Une indexation fulltext peut être une solution, mais il faudra penser à 
nourrir correctement le dictionnaire; la solution la plus rapide (si tant
est que ce type de recherche doive se répéter souvent) consisterait à 
ajouter des tags sur lesquels on effectue les recherches.
YMMV puisque ça dépend directement du type de texte dans lequel les 
recherches sont effectuées - si ce sont des milliers d'articles, 
plutôt fulltext, si c'est bcp moins que cela, plutôt tags.

> Quel serait la syntaxe SQL ou php en ce sens ... ?

SQL


-- 
He who sneezes without a handkerchief takes matters into his own hands.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/20111104145852.7b903eac@anubis.defcon1

Répondre à