Как сделать полнотекстовый поиск MySQL чтобы искал менее 4х символов
Недавно столкнулся с такой ситуацией в вордпресс. Поиск не работает по словам менее 4х символов. Это связано с тем, что полнотекстовый FULLTEXT индекс работает для слов 4 символа и более. За это отвечает параметр MySQL ft_min_word_len. Если значение этого параметра установить на 1, то поиск начнет работать на словах длинной 1 символ.
Для того чтобы настроить количество минимальных символов для MySQL нужно запустить СУБД с параметром
--ft_min_word_len=1
Либо в my.cnf изменить параметр
[mysqld]
ft_min_word_len = 1
Для облачной ОС нужно добавить Custom patch на странице редактирования MySQL приложения
<patch>
<name>Template patch</name>
<operations>
<operation type="add">
<path>/template/yaml/services/_var_app_name_</path>
<value>
<command>--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --sql-mode="" --ft_min_word_len=1 --innodb_ft_min_token_size=1</command>
</value>
</operation>
</operations>
</patch>
После изменения параметра, обязательно нужно выполнить команду SQL на таблицах, где у вас есть FULLTEXT индекс.
REPAIR TABLE table_name QUICK;
Потому что в этих таблицах остался старый индекс, и его нужно исправить на новое значение параметра ft_min_word_len