Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens « Impossible de trouver l'index FULLTEXT correspondant à la liste de colonnes » lors d'une recherche dans plusieurs colonnes ?

Pourquoi est-ce que j'obtiens « Impossible de trouver l'index FULLTEXT correspondant à la liste de colonnes » lors d'une recherche dans plusieurs colonnes ?

Linda Hamilton
Libérer: 2024-10-26 14:17:02
original
836 Les gens l'ont consulté

 Why am I getting

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`)
Copier après la connexion

Cependant, votre clause MATCH inclut uniquement la colonne suivante :

MATCH(`brand`) AGAINST('Skoda');
Copier après la connexion

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);
Copier après la connexion

Après avoir ajouté l'index approprié, réexécutez votre requête MATCH :

SELECT * FROM products WHERE MATCH(`brand`) AGAINST('Skoda');
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal