Die MySQL-Datenbank ermöglicht es Ihnen, Suchanfragen in natürlicher Sprache mit einem beliebigen Charakter basierte Feld durchführen durch die Verwendung eines FULLTEXT-Index . Eine Volltextsuche verwendet Stoppwörter ( Wörter, die nicht gesucht werden , wie die , und, und , dass ) , um boolean durchsucht und Relevanz Wertungen Ergebnisse zurück , die stärker dem entsprechen, was du suchst . Die Grundlagen
natürlicher Sprache suchen bedeutet, dass der Ausdruck oder ein Wort gesucht wird , als ob es gesprochen wurde , ohne spezielle Operatoren . Für eine MySQL Suche in natürlicher Sprache die Suchbegriffe müssen zwischen vier und 254 Zeichen und die Wörter müssen durch ein Trennzeichen wie ein Leerzeichen, Komma oder Punkt getrennt werden. Die MySQL -Parser nicht trennen kann also ohne irgendeine Art von Trennzeichen . Der Parser wird keine Stoppwörter aus den Suchwörtern entfernen (siehe Ressourcen für eine Liste von Wörtern ) . Die Stoppwörter werden nicht Teil der Suche sein , und wenn es nur Stoppwörter bei der Suche keine Ergebnisse zurückgegeben.
Jede Zeile , die den Suchparametern entspricht, wird eine Relevanz Bewertung gegeben und die Ergebnisse werden auf der Grundlage der zurückgegebene Rating, vom höchsten zum niedrigsten . Suchbegriffe , die mehr als 50 Prozent der Zeilen oder weniger als drei Zeilen mit Daten übereinstimmen, werden nicht zurückgegeben. Das ist sehr verschieden von der LIKE ( )-Funktion , die wie ein regulärer Ausdruck arbeitet , auf der Suche nach der genauen Zeichenfolge unabhängig von der Platzierung und Häufigkeit des Auftretens .
Die Syntax
um Volltextsuche unterstützt , muss die Tabelle mit einem Volltext-Index erstellt werden, und die Spalten indiziert muss ein Zeichen Datentyp haben ( CHAR , VARCHAR oder TEXT ) .
CREATE TABLE Artikel (id INT ( 10 ) DEFAULT '0 ' AUTO_INCREMENT , date_posted Datum, Kategorie INT ( 2 ), Titel VARCHAR (255) NOT NULL , Artikel TEXT NOT NULL , PRIMARY KEY (id) , FOREIGN KEY ( Kategorie) , Volltext (Titel, Artikel) );
Um die Daten abfragen möchten, verwenden Sie eine SELECT-Anweisung wie :
SELECT id , title FROM Artikel WHERE MATCH (Titel, Artikel) AGAINST ( ' MySQL ');
das Match -Klausel muss genau das gleiche wie die Felder in der FULLTEXT Index angegeben werden .
so verwenden Sie eine boolean Suche Ort die Worte " iN bOOLEAN MODE" nach dem Suchbegriff .
SELECT id, Titel FROM Artikel WHERE MATCH (Titel, Artikel) AGAINST ( '+ MySQL - PHP' IN BOOLEAN MODE) ;
Diese Abfrage wird alle Artikel , die die Zeichenfolge enthalten match " MySQL ", aber nicht das enthalten Zeichenfolge " PHP". Für eine vollständige Liste der Booleschen Operatoren siehe Ressourcen unten.