MATCH AGAINST sur plusieurs colonnes d'une table [Résolu]

Signaler
Messages postés
18
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
10 décembre 2008
-
Messages postés
18
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
10 décembre 2008
-
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

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
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.
Messages postés
18
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
10 décembre 2008

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.