Visiblement Coppermine stocke une série de mots clés. Il faut comprendre comment fonctionne le LIKE.
LIKE 'abcd%' : teste une chaîne qui commence par abcd.
LIKE '%wxyz" : teste une chaîne qui finit par wxyz
LIKE '%mnop%' : teste une chaîne qui contient mnop
Mais l'espace est également un caractère
LIKE '%mnop%' trouvera la chaîne 'abcd mnop wxyz', mais également la chaîne 'abcdmnopwxyz'
Si tu veux que ça ne retrouve que les mots complets, il faut donc tester avec l'espace LIKE '% mnop %'
Sauf ... que bien sûr, ça ne marche que si le mot est au milieu et pas au début ou à la fin. En effet, si tu cherches '% abcd %' et que ta chaîne contient 'abcd mnop wxyz', rien ne sera renvoyé car il n'y a pas d'espace avant le abcd. Idem pour '% wxyz %'.
Plusieurs solutions s'offrent à toi.
1) Travailler avec du fulltext. Il faut indexer les champs susceptibles d'être l'objet de la requête et modifier la syntaxe de la requête.
2) rajouter des espaces avant ou après les chaînes. Ceci ne peut pas être fait dans la table, car le type de données varchar supprime les espaces avant et après. Mais cela peut-être fait dans la requête.
Ceci résoud le problème dans un premier temps, mais de manière très basique. Mais il y a plein de cas qui ne fonctionneront pas
1) l'utilisateur tape un mot au masculin, mais c'est le féminin qui est stocké dans la base ou un mot au singulier, mais c'est le pluriel qui est stocké dans la base.
2) l'utilisateur tape deux mots : 'voiture super' et la base de ne contient que l'un des deux, ou les deux mots mais dans un autre ordre, ou les deux mots mais séparés par un troisième, ...