MySQL
Volltextsuche
Suche…
Einführung
MySQL bietet die Volltextsuche. Es durchsucht Tabellen mit Spalten mit Text nach den besten Übereinstimmungen für Wörter und Ausdrücke.
Bemerkungen
FULLTEXT
funktioniert merkwürdig bei Tabellen, die eine geringe Anzahl von Zeilen enthalten. Wenn Sie also damit experimentieren, kann es hilfreich sein, online einen mittelgroßen Tisch zu erhalten. Hier ist eine Tabelle mit Buchartikeln , Titeln und Autoren. Sie können es herunterladen, entpacken und in MySQL laden.
FULLTEXT
ist für die Verwendung mit menschlicher Unterstützung gedacht. Es wurde entwickelt, um mehr Übereinstimmungen zu erzielen als bei einer gewöhnlichen WHERE column LIKE 'text%'
.
FULLTEXT
Suche ist für MyISAM
Tabellen verfügbar. Es ist auch für InnoDB
Tabellen in MySQL Version 5.6.4 oder höher verfügbar.
Einfache FULLTEXT-Suche
SET @searchTerm= 'Database Programming';
SELECT MATCH (Title) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE) Score,
ISBN, Author, Title
FROM book
WHERE MATCH (Title) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE)
ORDER BY MATCH (Title) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE) DESC;
Bei einer Tabelle mit dem Namen book
mit den Spalten ISBN
, 'Title' und 'Author' werden Bücher gefunden, die den Begriffen 'Database Programming'
. Es zeigt zuerst die besten Übereinstimmungen.
Damit dies funktioniert, muss ein Volltextindex für die Title
verfügbar sein:
ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_index (Title);
Einfache BOOLEAN-Suche
SET @searchTerm= 'Database Programming -Java';
SELECT MATCH (Title) AGAINST (@searchTerm IN BOOLEAN MODE) Score,
ISBN, Author, Title
FROM book
WHERE MATCH (Title) AGAINST (@searchTerm IN BOOLEAN MODE)
ORDER BY MATCH (Title) AGAINST (@searchTerm IN BOOLEAN MODE) DESC;
Bei einer Tabelle mit dem Namen " book
mit den Spalten " ISBN
, " Title
und " Author
wird die Suche nach Büchern mit den Wörtern 'Database'
und 'Programming'
im Titel durchgeführt, nicht jedoch nach dem Wort 'Java'
.
Damit dies funktioniert, muss ein Volltextindex für die Titelspalte verfügbar sein:
ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_index (Title);
Mehrspaltige FULLTEXT-Suche
SET @searchTerm= 'Date Database Programming';
SELECT MATCH (Title, Author) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE) Score,
ISBN, Author, Title
FROM book
WHERE MATCH (Title, Author) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE)
ORDER BY MATCH (Title, Author) AGAINST (@searchTerm IN NATURAL LANGUAGE MODE) DESC;
Bei einer Tabelle mit dem Namen "book" mit den Spalten " ISBN
, " Title
und " Author
werden Bücher gefunden, die den Begriffen "Date Database Programming" entsprechen. Es zeigt zuerst die besten Übereinstimmungen. Zu den besten Übereinstimmungen zählen Bücher von Prof. CJ Date.
(Eines der besten Übereinstimmungen ist jedoch auch der Date Doctor's Guide für das Dating: Wie man vom ersten Date bis zum Perfect Mate kommt . Dies zeigt eine Einschränkung der FULLTEXT-Suche: Es gibt nicht vor, solche Dinge als Teile der Sprache zu verstehen die Bedeutung der indizierten Wörter.)
Damit dies funktioniert, muss ein Volltextindex für die Spalten Titel und Autor verfügbar sein:
ALTER TABLE book ADD FULLTEXT INDEX Fulltext_title_author_index (Title, Author);