MySQLのLIKE ‘%日本語%’だと遅いので、日本語全文検索(FULLTEXT INDEXES)で部分検索をやってみる。laravel8でもやってみる!

MySQLのLIKE ‘%日本語%’だと遅いので、日本語全文検索(FULLTEXT INDEXES)で部分検索をやってみる。laravel8でもやってみる!

1, SQL文で試してみる

phpMyAdminで実行してみると、合計 52, クエリの実行時間: 0.0052 秒とか早そうだけど、表示まで時間かかる。
サーバ上でコマンドラインから実行してみたら、超早いのでインデックスの効果あり!
ネットワークとか描画の問題か?

1, 単語の頭にプラスをつけると検索ワード
2, スペースで区切って、単語の頭にプラスをつけると検索ワード(AND検索になる)
3, 単語の頭にマイナスをつけると除外ワード
4, 単語の頭に何も付けないとOR検索になる(複数ワードの時には、あんまり意味がない)

大阪とビルを含んで、東京を含まないレコードがSELECTされる

2, laravelのeloquentで試してみる。

migrationのテーブル定義に、部分検索したいカラムにフルテキスト・インデックスを設定しておく

UserController.phpで、実際の検索を記述。
MySQL依存なので、生SQLを記述しておく(将来的にはeloquentで書けたりするのだろうか?)

さすがにLIKEより全然速い!
これって、複数のカラムをフルテキスト・インデックス貼って大丈夫なのだろうか…。