Nach der Indizierung wird eine Volltextsuche mit den beiden Funktionen Match() und Against() durchgeführt, wobei Match() die zu durchsuchende Spalte und Against() den zu verwendenden Suchausdruck angibt.
Das Folgende ist ein Beispiel:
Eingabe:
select note_text from productnotes where match(note_text) against('rabbit');
Ausgabe:
Analyse : Diese SELECT-Anweisung ruft einen einzelnen Spaltennotiztext ab. Aufgrund der WHERE-Klausel wird eine Volltextsuche durchgeführt. Match(note_text) weist MySQL an, in der angegebenen Spalte zu suchen, und Against('rabbit') gibt das Wort Rabbit als Suchtext an. Da zwei Zeilen das Wort Rabbit enthalten, werden diese beiden Zeilen zurückgegeben.
Verwenden Sie die vollständige Match()-Beschreibung. Der an Match() übergebene Wert muss derselbe sein wie in der FULLTEXT()-Definition. Wenn Sie mehrere Spalten angeben, müssen diese aufgelistet werden (und in der richtigen Reihenfolge).
Bei der Suche wird die Groß-/Kleinschreibung nicht beachtet. Bei der Volltextsuche wird die Groß-/Kleinschreibung nicht beachtet, es sei denn, Sie verwenden den BINÄR-Modus.
Die Wahrheit ist, dass die Suche gerade einfach mit der LIKE-Klausel wie folgt durchgeführt werden kann:
Eingabe:
select note_text from productnotes where note_text like '%rabbit';
Ausgabe:
Analyse: Diese SELECT-Anweisung ruft ebenfalls zwei Zeilen ab, jedoch in einer anderen Reihenfolge (obwohl dies nicht immer der Fall ist).
Keine der beiden oben genannten SELECT-Anweisungen enthält eine ORDER BY-Klausel. Letzteres (unter Verwendung von LIKE ) gibt Daten in einer Reihenfolge zurück, die nicht besonders nützlich ist. Ersteres (mittels Volltextsuche) gibt Daten sortiert nach der Übereinstimmung des Textes zurück. Beide Zeilen enthalten das Wort „Kaninchen“, aber die Zeile, die das Wort „Kaninchen“ als 3. Wort enthält, hat einen höheren Rang als die Zeile, die das Wort „Kaninchen“ als 20. Wort enthält. Das ist wichtig. Ein wichtiger Teil der Volltextsuche ist das Sortieren der Ergebnisse. Zeilen mit höheren Rängen werden zuerst zurückgegeben (da dies wahrscheinlich die Zeilen sind, die Sie tatsächlich benötigen).
Um zu veranschaulichen, wie das Sortieren funktioniert, sehen Sie sich das folgende Beispiel an:
Eingabe:
select note_text match(note_text) against('rabbit') as rank from productnotes;
Ausgabe:
Analyse: Hier werden Match() und Against() in der SELECT-Klausel anstelle der WHERE-Klausel verwendet. Dadurch werden alle Zeilen zurückgegeben (da es keine WHERE-Klausel gibt). Match() und Against() werden verwendet, um eine berechnete Spalte (mit dem Alias rank ) zu erstellen, die den durch die Volltextsuche berechneten Rangwert enthält. Der Rang wird von MySQL basierend auf der Anzahl der Wörter in der Zeile, der Anzahl der eindeutigen Wörter, der Gesamtzahl der
-Wörter im gesamten Index und der Anzahl der Zeilen, die dieses Wort enthalten, berechnet. Wie Sie sehen können, haben Zeilen, die das Wort „Kaninchen“ nicht enthalten, den Rang 0 (und werden daher im vorherigen Beispiel nicht von der WHERE-Klausel ausgewählt). Die beiden Zeilen, die das Wort „Kaninchen“ enthalten, haben jeweils einen Rangwert, wobei die Zeile vor dem Wort im Text einen höheren Rangwert hat als die Zeile nach dem Wort.
Dieses Beispiel hilft zu veranschaulichen, wie eine Volltextsuche Zeilen ausschließt (solche mit einem Rang von 0 ausschließt) und die Ergebnisse sortiert (Sortierung nach Rang in absteigender Reihenfolge).
Sortieren mehrerer Suchbegriffe Wenn mehrere Suchbegriffe angegeben werden, haben die Zeilen mit den meisten übereinstimmenden Wörtern einen höheren Rangwert als die Zeilen mit weniger Wörtern (oder nur einer Übereinstimmung).
Wie Sie sehen, bietet die Volltextsuche Funktionen, die eine einfache LIKE-Suche nicht bieten kann. Da die Daten zudem indiziert sind, sind Volltextsuchen recht schnell.
Das obige ist der detaillierte Inhalt vonTutorial zur MySQL-Volltextsuche. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!