Как я могу изменить MySQL, чтобы приспособиться к этому?
Вам придется изменить представление MySQL о том, что такое слово.
Во-первых, минимальная длина слова по умолчанию - 4. Это означает, что ни один поисковый запрос, содержащий только слова из ‹4 букв, никогда не будет соответствовать, будь то« C ++ »или« cpp ». Вы можете настроить это с помощью ft_min_word_len вариант конфигурации, например. в вашем my.cfg:
[mysqld]
ft_min_word_len=3
(Затем остановите / запустите MySQLd и перестройте полнотекстовые индексы.)
Во-вторых, MySQL не считает букву "+". Вы можете превратить его в букву, но тогда это означает, что вы не сможете искать слово «рыба» в строке «рыба + чипсы», поэтому потребуется некоторая осторожность. И это нетривиально: требуется перекомпиляция MySQL или взлом существующего набора символов. См. Начало раздела «Если вы хотите изменить набор символов, которые считаются словесными ...» в раздел 11.8.6 документа.
экранировать символ + во время ввода моих данных как что-то вроде "__plus", а затем изменить мой поиск, чтобы он соответствовал
Да, что-то подобное является распространенным решением: вы можете хранить свои «настоящие» данные (без экранирования) в первичной окончательной таблице - обычно с использованием InnoDB для соответствия ACID. Затем может быть добавлена вспомогательная таблица MyISAM, содержащая только искаженные слова для приманки полнотекстового поиска. Используя этот подход, вы также можете выполнить ограниченную форму стемминга.
Другая возможность - обнаружить поисковые запросы, которые MySQL не может выполнить, например, поиск только с короткими словами или необычными символами, и вернуться к простому, но медленному поиску LIKE или REGEXP только для этих поисков. В этом случае вы, вероятно, также захотите удалить список стоп-слов, установив ft_stopword_file в пустую строку, так как нецелесообразно воспринимать все в ней как особенное.
person
bobince
schedule
25.02.2009