MATCH AGAINST sur plusieurs colonnes d'une table

Résolu
cyse Messages postés 18 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 10 décembre 2008 - 6 déc. 2007 à 16:19
cyse Messages postés 18 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 10 décembre 2008 - 6 déc. 2007 à 17:26
Bonjour,

J'ai un problème assez curieux puisque j'ai vu que c'était possible de la rechercher sur plusieurs colonnes FULLTEXT d'une table en le spécifiant dans le MATCH.

Quand je fais comme requete:

SELECT * FROM labase WHERE MATCH (col1,col2,col3) AGAINST ('leoulesmotsrecherché');

Il me dit

Can't find FULLTEXT index matching the column list

Alors que si je met col1 seulement ça marche, col2 aussi et col3 aussi.
Mais pas toutes à la fois alors que même la doc sur mysql.com dit que c'est possible !

J'ai essayé aussi depuis phpmyadmin directement et j'ai la même erreur, on dirait qu'il recherche la colonne "col1,col2,col3" sans différencier chacune grace à la virgule !

J'ai besoin de vos lumières la SVP.

Merci 1000 fois.

2 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
6 déc. 2007 à 16:44
Salut,

Tu dois indexer les champs sur lesquels porte la recherche :

ALTER TABLE `nom_de_la_table` ADD FULLTEXT (
`champ1`, `champ2`
)

Si la requête porte sur plusieurs champs, il y a fort à parier qu'il faut les spécifier TOUS dans l'index (un index peut indexer plusieurs champs). Et je pense qu'il faut aussi faire attention à l'ordre dans lequel on les mets.
L'index FULLTEXT ne fonctionne pas avec des tables InnoDB, uniquement des tables MyISAM.
3
cyse Messages postés 18 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 10 décembre 2008
6 déc. 2007 à 17:26
Merci beaucoup pour vos précisions.

C'est une fois de plus juste, il est important de bien faire le fulltext sur les champs voulu en une seule fois, et non un fulltext indépendamment. un fulltext est alors créé groupant l'ensemble des champs voulus.

Encore merci.
0
Rejoignez-nous