6 Stimmen

Behandlung von 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 beispielsweise nach "C++" suche, interpretiert es das + als Operator. Was ist die beste Methode, um mit diesen Sonderzeichen umzugehen?

Die aktuelle Methode, die ich verwende, besteht darin, alle + -Zeichen in den Daten in _plus umzuwandeln. Es wandelt auch die Zeichen &,@,/ und # in eine textuelle Darstellung um.

5voto

Gary Pendergast Punkte 141

Es gibt keinen einfachen Weg, dies mit der Volltextsuche von MySQL zu tun. Was du tust (das Ersetzen von Sonderzeichen durch eine vordefinierte Zeichenkette) ist der einzige Weg, es zu tun.

Du könntest in Betracht ziehen, stattdessen Sphinx Search zu verwenden. Es unterstützt anscheinend das Escapen von Sonderzeichen und ist laut Berichten deutlich schneller als die standardmäßige Volltextsuche.

4voto

thomasrutter Punkte 109036

MySQL ist ziemlich brutal darin, welche Tokens es ignoriert, wenn es seine Volltextindizes erstellt. Ich würde sagen, dass es bei dem Begriff "C++" wahrscheinlich die Pluszeichen herausnehmen würde, und nur C übrig bleibt, und das dann ignorieren würde, weil es zu kurz ist. Sie könnten MySQL wahrscheinlich so konfigurieren, dass auch einzelne Buchstabenwörter enthalten sind, aber es ist nicht dafür optimiert, und ich bezweifle, dass Sie es dazu bringen könnten, die Pluszeichen so zu behandeln, wie Sie es möchten.

Wenn Sie einen Bedarf an einer guten internen Suchmaschine haben, bei der Sie Dinge wie diese konfigurieren können, sehen Sie sich Lucene an, das in verschiedene Sprachen einschließlich PHP (im Zend-Framework) portiert wurde.

Oder wenn Sie dies mehr für 'Tagging' als für die Textsuche benötigen, ist vielleicht etwas anderes geeigneter.

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