Hello,
J'ai une petite question MySQL, au sujet de recherches dans un champ TEXT. J'ai une table (dont malheureusement je ne peux modifier la structure) qui contient un champ texte ; nommons-le "pe". Celui-ci possède un index de type fulltext.
Typiquement ce champ contient : 1,2,3
Une requête avec un "FIND_IN_SET", pour rechercher toutes les entrées contenant "2" p.ex. fonctionne parfaitement bien, cependant c'est très très lent (visiblement ça n'utilise pas l'index). Exemple :
Code :
- SELECT * FROM mytable WHERE FIND_IN_SET('2', pe);
|
L'idée serait alors d'utiliser un match against :
Code :
- SELECT * FROM mytable WHERE MATCH (pe) AGAINST ('+"2"+' IN BOOLEAN MODE);
|
Or les inconvénients de cette méthode sont :
- si on recherche dans 1,2,3 : pas de résultats, or dans 2,3,4 ou 3,4,2 ça fonctionne ;
- si on recherche dans 1,222,3 : il trouve aussi un résultat.
Mes questions : comment limiter la recherche à un mot entier, dans une liste séparée par virgule avec match/against ? Y a-t-il aussi rapide, mais avec une autre fonction (sachant toujours que je ne peux pas modifier la structure de la table) ?
Merci beaucoup pour votre aide.
---------------
Un être en tant qu'être ne pourrait-il pas être autre qu'il n'est s'il n'explique pas lui-même son être ?