Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine volltextähnliche Suche in InnoDB-Tabellen in MySQL erreichen?

Wie kann ich eine volltextähnliche Suche in InnoDB-Tabellen in MySQL erreichen?

Linda Hamilton
Freigeben: 2024-12-17 13:52:09
Original
842 Leute haben es durchsucht

How Can I Achieve Fulltext-Like Search on InnoDB Tables in MySQL?

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));
Nach dem Login kopieren

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');
Nach dem Login kopieren

Vorteile

Dieser Ansatz bietet die folgenden Vorteile:

  • Volltextähnliche Suchfunktionen ohne den Overhead von Sphinx oder andere externe Tools
  • Schnellere Suchleistung im Vergleich zu „LIKE“ Abfragen
  • Vereinfachte Implementierung und Wartung

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage