はじめに
全文検索エンジンMroonga/Groongaでは、主に以下の点が全文検索性能に影響すると思われます。
- 検索がインデックスアクセスのみであるか否か
Mroongaでは、特定の条件下において、複数インデックスを用いて全文検索することができます。(参考:MroongaによりMySQLで複数インデックスを有効に全文検索する方法)
Groongaでは、ある程度自由に複数インデックスを用いて全文検索することができます。(インデックスが使われないケースを特定する方法は今のところわかりません。)
- 語句の出現頻度が非常に高いかどうか
Ngramのサイズに応じたMroonga/Groongaの全文検索性能について、Mroonga/GroongaのMeCabトークナイザの全文検索性能についてに示したように、語句の出現頻度が非常に高いと検索性能が劣化します。
- 検索結果のレコード件数が非常に多いかどうか
Mroongaにおける様々なレコード件数カウント方法とパフォーマンスについてに示したように、検索結果のレコード件数が非常に多いと検索性能がある程度劣化します。
これらのうち語句の出現頻度は、検索性能への影響が大きいです。たとえば、Unigramトークナイザを用いた場合は、全体的に語句の出現回数が非常に多くなり、検索性能が大幅に劣化します。
しかしながら、データベース規模が大きくなればなるほど、全体的に語句の出現回数は多くなり、BigramトークナイザやMeCabトークナイザを用いたとしても全文検索性能がある程度劣化せざるを得ません。
そこで、語句の出現回数が非常に多くて検索性能が劣化する場合に、ハードウェア性能を向上させると、どの程度検索性能を向上させることができるかを試してみます。