Wie kann ich MySQL ändern, um dies zu berücksichtigen?
Sie müssen die Idee von MySQL ändern, was ein Wort ist.
Erstens ist die Standardminimalwortlänge 4. Dies bedeutet, dass kein Suchbegriff, der nur Wörter von < 4 Buchstaben enthält, jemals übereinstimmen wird, ob das "C++" oder "cpp" ist. Sie können dies mit der Konfigurationsoption ft_min_word_len konfigurieren, z. in Ihrem my.cfg:
[mysqld]
ft_min_word_len=3
(Dann MYSQLD Stopp/Start und Volltext-Indizes neu erstellen.)
Zweitens ‚+‘ keinen Brief von MySQL betrachtet. Sie können es zu einem Buchstaben machen, aber das bedeutet, dass Sie nicht in der Zeichenfolge "Fisch + Chips" nach dem Wort "Fisch" suchen können, daher ist etwas Vorsicht geboten. Und es ist nicht trivial: Es erfordert das Neukompilieren von MySQL oder das Hacken eines vorhandenen Zeichensatzes. Siehe den Abschnitt, der mit "Wenn Sie die Zeichengruppe, die als Wortzeichen gelten ..." geändert werden soll, in section 11.8.6 des Dokuments.
entkommen das Zeichen + während des Prozesses meine Daten als so etwas wie „__plus“ einzugeben und dann meine Suche modifizieren zu empfangen
Ja, so etwas wie, dass eine gemeinsame Lösung ist: Sie können halten Sie Ihre "echte" Daten (ohne das Entkommen) in einer primären, endgültigen Tabelle - normalerweise unter Verwendung von InnoDB für ACID-Konformität. Dann kann eine zusätzliche MyISAM-Tabelle hinzugefügt werden, die nur die verfälschten Wörter für den Volltext-Such-Köder enthält. Sie können mit diesem Ansatz auch eine begrenzte Form des Stemmings durchführen. Eine andere Möglichkeit besteht darin, Suchvorgänge zu erkennen, die MySQL nicht ausführen kann, z. B. solche mit nur kurzen Wörtern oder ungewöhnlichen Zeichen, und auf eine einfache, aber langsame LIKE- oder REGEXP-Suche nur für diese Suchvorgänge zurückgreifen. In diesem Fall werden Sie wahrscheinlich auch die Stoppliste entfernen wollen, indem Sie ft_stopword_file auf eine leere Zeichenkette setzen, da es nicht praktisch ist, alles darin auch als speziell aufzunehmen.
Was zum Teufel ist eine Volltext-Boolesche Suche? Es klingt furchtbar, als hättest du dieses Wort erfunden. Auch deine Frage ist sehr vage. Sie müssen Ihr Problem besser beschreiben, was Sie vorhaben. Sonst können wir dir nicht helfen. –
@John: Du bist sehr hart. Ich musste mich selbst davon abhalten, mich mit lmgtfy zu verlinken, deshalb gibt es hier eine Erklärung von MySQL: http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html –
@A. Rex - ich bin böse (in gewissem Sinne) mein Punkt, den ich als harsch empfinde, aber es fehlt die Frage, wie du eine gute Frage stellen würdest. Als solche können wir (Stack Overflow People) aufgrund ungenügender Informationen keine gute Antwort liefern. –