うすゆきブログ

mroonga(MySQLで高速日本語全文検索)を導入してみた

2021年6月14日 2021年6月14日

導入経緯

mroongaというMySQL用のストレージエンジンがあります。かどで日記という独自サービスで日本語検索を使うにあたって、早くなるのか試してみました。環境はkusanagiです。

https://mroonga.org/ja/

なんと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)
124.737.19
27.656.3
36.266.3
476.5
56.646.26
67.346.46
78.976.6
86.66.27
96.616.32
108.776.47

WordPressの方(両者トップページのみ)

少し早くなりました。 ただ、かなり変動しますね。(クエリ数は非公開にしておきます)
平均取るのは手間だったので辞めました。ごめんなさい…
肝心の検索機能での変化を試してないことに後から気づきました…………

サイトmroong導入前(単位:ms)mroong導入後(単位:ms)
blog149122
portfolio12647