Durchsuchen von MySQL-Daten mit volltextähnlichen Funktionen in InnoDB
Der herkömmliche Ansatz, „LIKE“ für die Zeichenfolgensuche in einer InnoDB-Tabelle zu verwenden, leidet darunter aus Leistungseinschränkungen und der Notwendigkeit, jeden Suchbegriff einzeln zu prüfen. Um die Suchfunktionalität zu verbessern, ist eine Lösung wünschenswert, die die Volltextsuche in InnoDB-Tabellen nachahmt.
Lösung: Verwendung einer separaten MyISAM-Tabelle für die Indizierung
Dieser Ansatz beinhaltet die Erstellung einer separaten MyISAM-Tabelle, die die InnoDB-Tabelle widerspiegelt. Die MyISAM-Tabelle enthält eine zusätzliche Spalte, die mit dem Schlüsselwort „FULLTEXT“ indiziert ist. Indem wir diese MyISAM-Tabelle mit Zeilendaten füllen, erstellen wir effektiv einen Index, der schnelle, volltextähnliche Suchfunktionen unterstützt.
Implementierung
Betrachten Sie das folgende Beispiel:
-- 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));
Daten synchronisieren
Um die zu behalten Wenn die MyISAM-Volltexttabelle auf dem neuesten Stand ist, können Sie Trigger, Batch-Updates oder andere geeignete Mechanismen verwenden.
Durchführen von Suchabfragen
Jetzt können Sie Volltext-ähnliche Abfragen durchführen suchen Abfragen:
-- 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');
Vorteile
Dieser Ansatz bietet die folgenden Vorteile:
Das obige ist der detaillierte Inhalt vonWie kann ich eine volltextähnliche Suche in InnoDB-Tabellen in MySQL erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!