Recherche de données MySQL avec des capacités de type texte intégral sur InnoDB
L'approche conventionnelle consistant à utiliser "LIKE" pour la recherche de chaînes sur une table InnoDB en souffre des limitations de performances et de la nécessité de vérifier chaque terme de recherche individuellement. Pour améliorer la fonctionnalité de recherche, une solution qui imite la recherche en texte intégral sur les tables InnoDB est souhaitable.
Solution : utiliser une table MyISAM distincte pour l'indexation
Cette approche implique la création d'une table MyISAM distincte pour l'indexation. Table MyISAM qui reflète la table InnoDB. La table MyISAM contient une colonne supplémentaire indexée avec le mot-clé "FULLTEXT". En remplissant cette table MyISAM avec des données de lignes, nous créons efficacement un index qui prend en charge des capacités de recherche rapides de type texte intégral.
Mise en œuvre
Considérons l'exemple suivant :
-- InnoDB tables CREATE TABLE users (id INT, name VARCHAR(255), PRIMARY KEY (id)); CREATE TABLE forums (id INT, name VARCHAR(255), PRIMARY KEY (id)); CREATE TABLE threads (id INT, subject VARCHAR(255), user_id INT, forum_id INT, PRIMARY KEY (id)); -- MyISAM fulltext table CREATE TABLE threads_ft (id INT, subject VARCHAR(255), FULLTEXT(subject), PRIMARY KEY (id));
Synchronisation des données
Pour conserver le Table de texte intégral MyISAM à jour, vous pouvez utiliser des déclencheurs, des mises à jour par lots ou tout autre mécanisme approprié.
Effectuer des requêtes de recherche
Maintenant, vous pouvez effectuer des requêtes de type texte intégral requêtes de recherche :
-- Stored procedure for searching CREATE PROCEDURE ft_search_threads(IN p_search VARCHAR(255)) BEGIN SELECT * FROM threads_ft WHERE MATCH(subject) AGAINST (p_search IN BOOLEAN MODE) ORDER BY RANK() DESC; END; -- Example query CALL ft_search_threads('keyword1 keyword2 keyword3');
Avantages
Ceci Cette approche offre les avantages suivants :
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!