Dépannage "Impossible de trouver l'index FULLTEXT correspondant à la liste de colonnes" pour la recherche sur plusieurs colonnes
Lors de la construction d'une requête MATCH...AGAINST impliquant plusieurs colonnes dans un index de texte intégral, il est crucial de s'assurer que l'ordre des colonnes dans l'index correspond à l'ordre dans lequel elles apparaissent dans la clause MATCH. D'après le message d'erreur que vous avez rencontré, il semble que la définition de votre index de texte intégral inclut plus de colonnes que votre clause MATCH.
Comme vous l'avez mentionné, votre table contient un index de texte intégral défini sur plusieurs colonnes :
FULLTEXT KEY `name` (`name`,`breadcrumb`,`description`,`brand`,`price`,`year`,`km`,`usage`,`type`)
Cependant, votre clause MATCH inclut uniquement la colonne suivante :
MATCH(`brand`) AGAINST('Skoda');
Cette inadéquation entre le nombre de colonnes dans l'index et la clause MATCH est à l'origine de l'erreur. Pour résoudre ce problème, vous devez ajuster soit la définition de l'index, soit la clause MATCH pour vous assurer qu'elles s'alignent.
L'approche recommandée consiste à modifier l'index de texte intégral pour qu'il corresponde aux colonnes que vous avez l'intention d'utiliser dans votre recherche. Dans ce cas, vous pouvez exécuter la requête suivante pour ajouter un nouvel index de texte intégral qui inclut uniquement la colonne de marque :
ALTER TABLE products ADD FULLTEXT(brand);
Après avoir ajouté l'index approprié, réexécutez votre requête MATCH :
SELECT * FROM products WHERE MATCH(`brand`) AGAINST('Skoda');
Cela devrait maintenant renvoyer les résultats attendus sans le message d'erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!