[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] syntaxe SQL et/ou php



On Fri, 4 Nov 2011 11:20:26 +0100
h.wismes@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.


Reply to: