Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erlauben Sie die Volltextsuche mit Bindestrichen in der Suchanfrage

Von hier http://dev.mysql.com/doc /refman/5.0/en/fulltext-search.html

Eine Lösung, um ein Wort mit Bindestrichen oder Bindestrichen zu finden, besteht darin, die VOLLTEXTSUCHE IM BOOLEAN-MODUS zu verwenden und das Wort mit dem Bindestrich in doppelte Anführungszeichen zu setzen.

Oder von hier http://bugs.mysql.com/bug.php?id=2095

Es gibt eine andere Problemumgehung. Es wurde kürzlich zum Handbuch hinzugefügt:„Eine Zeichensatzdatei ändern:Dies erfordert keine Neukompilierung. Das Makro true_word_char() verwendet eine „Zeichentyp“-Tabelle, um Buchstaben und Zahlen von anderen Zeichen zu unterscheiden. Sie können den Inhalt in einem der Zeichen bearbeiten Legen Sie XML-Dateien fest, um anzugeben, dass „-“ ein „Buchstabe“ ist. Verwenden Sie dann den angegebenen Zeichensatz für Ihre FULLTEXT-Indizes."

Ich habe es noch nicht selbst ausprobiert.

Bearbeiten:Hier sind weitere zusätzliche Informationen von hier http:/ /dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html

Ein Satz, der in doppelte Anführungszeichen („„“) eingeschlossen ist, stimmt nur mit Zeilen überein, die den Satz wörtlich so enthalten, wie er eingegeben wurde. Die Volltext-Engine teilt den Satz in Wörter auf und führt eine Suche im FULLTEXT-Index nach den Wörtern durch. Vor MySQL 5.0.3 führte die Engine dann in den gefundenen Datensätzen eine Teilstringsuche nach dem Ausdruck durch, sodass die Übereinstimmung Nichtwortzeichen im Ausdruck enthalten muss.Ab MySQL 5.0.3 müssen Nichtwortzeichen nicht exakt abgeglichen werden:Die Phrasensuche erfordert nur, dass Übereinstimmungen genau die gleichen Wörter wie die Phrase und in der gleichen Reihenfolge enthalten. Zum Beispiel stimmt "test phrase" mit "test, phrase" in MySQL 5.0.3 überein, aber nicht früher.

Wenn der Ausdruck keine Wörter enthält, die im Index vorhanden sind, ist das Ergebnis leer. Wenn beispielsweise alle Wörter entweder Stoppwörter sind oder kürzer als die Mindestlänge der indizierten Wörter sind, ist das Ergebnis leer.