Ще трябва да промените представата на MySQL за това какво представлява думата.
Първо, минималната дължина на думата по подразбиране е 4. Това означава, че нито една дума за търсене, съдържаща само думи с <4 букви, никога няма да съвпадне, независимо дали това е „C++“ или „cpp“. Можете да конфигурирате това с помощта на ft_min_word_len опция за конфигурация, напр. във вашия my.cfg:
[mysqld]
ft_min_word_len=3
(След това спрете/стартирайте MySQLd и изградете отново пълнотекстови индекси.)
Второ, „+“ не се счита за буква от MySQL. Можете да го направите буква, но тогава това означава, че няма да можете да търсите думата „риба“ в низа „риба+чипс“, така че е необходимо малко внимание. И това не е тривиално:изисква прекомпилиране на MySQL или хакване на съществуващ набор от знаци. Вижте секцията, започваща „Ако искате да промените набора от знаци, които се считат за словни знаци...“ в раздел 11.8.6 на док.
Да, нещо подобно е често срещано решение:можете да запазите вашите „истински“ данни (без екранирането) в първична, окончателна таблица — обикновено използвайки InnoDB за съответствие с ACID. След това може да се добави допълнителна таблица MyISAM, съдържаща само обърканите думи за стръв за пълнотекстово търсене. Можете също така да направите ограничена форма на стеминг, като използвате този подход.
Друга възможност е да откриете търсения, които MySQL не може да направи, като например тези само с кратки думи или необичайни знаци, и да се върнете към просто, но бавно търсене LIKE или REGEXP само за тези търсения. В този случай вероятно ще искате да премахнете списъка за спиране, като зададете ft_stopword_file на празен низ, тъй като не е практично да вземете и всичко в него като специално.