mroonga(MySQLで高速日本語全文検索)を導入してみた
導入経緯
mroongaというMySQL用のストレージエンジンがあります。かどで日記という独自サービスで日本語検索を使うにあたって、早くなるのか試してみました。環境はkusanagiです。
なんとkusanagiだと
kusanagi addon install mroonga
で終わりです。衝撃の簡単さです……
Laravelのeloqunetで10単語(同じ単語だとキャッシュ効いて差がなくなるため)LIKE検索しました。
Laravel8,でEloquentを使用してSQLを生成 検索はwhere()->orderby()->take()->get()で、LIKE検索した結果を日付新しい順に最大200まで取ってくる処理です。 計測は \DB::enableQueryLog();と\DB::getQueryLog();でやってます。 DBはMariaDB(kusanagiのlampで生成) 日記数 : 891件 総文字数 : 324545文字
おまけでブログサイトとポートフォリオもクエリ時間の変化を試しました。
WordPressは最新バージョンでkusanagiのプラグインで表示されるクエリ時間を参照します。
結果
Laravelの方は目に見えた変化はなかったです…
WordPressは若干早くなったかなって感じです…
厳密な比較でないので何とも……
同一単語についてのクエリ時間(laravel)
これは純粋に1クエリでの時間です。
有効数字むちゃくちゃなのごめんなさい…趣味でやってるんです……
気持ち早くなかったかなって感じですかね
回数 | mroong導入前(単位:ms) | mroong導入後(単位:ms) |
1 | 24.73 | 7.19 |
2 | 7.65 | 6.3 |
3 | 6.26 | 6.3 |
4 | 7 | 6.5 |
5 | 6.64 | 6.26 |
6 | 7.34 | 6.46 |
7 | 8.97 | 6.6 |
8 | 6.6 | 6.27 |
9 | 6.61 | 6.32 |
10 | 8.77 | 6.47 |
WordPressの方(両者トップページのみ)
少し早くなりました。 ただ、かなり変動しますね。(クエリ数は非公開にしておきます)
平均取るのは手間だったので辞めました。ごめんなさい…
肝心の検索機能での変化を試してないことに後から気づきました…………
サイト | mroong導入前(単位:ms) | mroong導入後(単位:ms) |
blog | 149 | 122 |
portfolio | 126 | 47 |