MySQLの全部検索の設定で注意すべきところ
MySQLには標準で全文検索機能がある。分かち書きが必要とは言えワイルドカードで検索するよりよっぽどましなので使った方がいいケースも多い。
ただしこの全文検索機能は「検索文字の文字数が4文字以下はヒットしない」という条件がある。まあ高速化のためにはある程度考えるべきなのだろうが、英語ならともかく日本語では4文字以下の単語の比率が結構高いと思うし英語でもcatとかdogとか簡単な単語が引っかからないため、そのあたりは変更しなければならない。
で、ft_min_word_len
の値を1にして再起動、インデックスを張りなおしていざ検索したところ、なぜかヒットしない。
うんうん悩んで設定を見ていくと似たような設定にinnodb_ft_min_token_size
というのもあった。これはエンジンでInnoDBをつかう場合の検索条件らしく、外部キーの設定などでInnoDBを使っていたのでこれかと思いこちらの設定値を0にしたところうまくいった。
多くのfulltext関係の資料ではft_min_word_len
の変更で設定が変わると書いていたので勘違いした。ただ、もしかするとこちらの数値も変更する必要があるのかもしれない。とはいえいちいち変更して試すのがめんどいので申し訳ないが誰かやってまとめておいてほしい