6 Stimmen

Umgang mit MySQL-Volltext-Sonderzeichen

Bei der Verwendung der MySQL-Volltextsuche im booleschen Modus gibt es bestimmte Zeichen wie + und -, die als Operatoren verwendet werden. Wenn ich eine Suche nach etwas wie "C++" durchführe, wird das + als Operator interpretiert. Was ist die beste Praxis für den Umgang mit diesen Sonderzeichen?

Die derzeitige Methode, die ich verwende, besteht darin, alle +-Zeichen in den Daten in _plus umzuwandeln. Außerdem werden die Zeichen &, @, / und # in eine Textdarstellung umgewandelt.

5voto

Gary Pendergast Punkte 141

Es gibt keine Möglichkeit, dies mit der Volltextsuche von MySQL zu tun. Was Sie tun (Ersetzen von Sonderzeichen durch eine vordefinierte Zeichenkette) ist die einzige Möglichkeit, dies zu tun.

Sie können Folgendes in Betracht ziehen Sphinx-Suche stattdessen. Sie unterstützt offenbar die Umgehung von Sonderzeichen und ist Berichten zufolge deutlich schneller als die standardmäßige Volltextsuche.

4voto

thomasrutter Punkte 109036

MySQL ist ziemlich brutal darin, welche Token es beim Aufbau seiner Volltextindizes ignoriert. Ich würde sagen, wenn es auf den Begriff "C++" stößt, wird es wahrscheinlich die Pluszeichen entfernen, so dass nur C übrig bleibt, und das dann ignorieren, weil es zu kurz ist. Sie könnten MySQL wahrscheinlich so konfigurieren, dass es Wörter mit nur einem Buchstaben einschließt, aber es ist nicht dafür optimiert, und ich bezweifle, dass Sie es dazu bringen können, die Pluszeichen so zu behandeln, wie Sie es wollen.

Wenn Sie eine gute interne Suchmaschine benötigen, mit der Sie solche Dinge konfigurieren können, sollten Sie sich Lucene das in verschiedene Sprachen portiert wurde einschließlich PHP (im Zend-Framework) .

Wenn Sie diese Funktion eher für die "Verschlagwortung" als für die Textsuche benötigen, ist vielleicht etwas anderes besser geeignet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X