Kouhei Sutou
kou****@clear*****
2013年 12月 9日 (月) 10:51:48 JST
須藤です。 In <CANM+HhcbDuH8s0mnvCiicC942xdJ2_y6Gzo****@mail*****> "[groonga-dev,01965] Re: FULLTEXTインデックス以外での絞り込みについて" on Sat, 7 Dec 2013 00:45:02 +0900, Naoya Murakami <visio****@gmail*****> wrote: >> Groongaのどこらへんが遅いのかちょっと測ってみたのですが、 >> 結果レコードセットを作るところが遅いですねぇ。。。 >> >> 結果レコードセットを作るの以外(検索を含む)で0.1秒くらいなの >> で、結果レコードセットを作るので1秒以上かかっていますねぇ。 >> >> >> http://groonga.org/ja/publication/presentation/groonga-night-2-the-future.pdf >> の18ページのベンチマークを見ると、grn_hash(結果レコードセッ >> トを入れるテーブル)は1レコードあたり0.5マイクロ秒かかるっぽ >> くて、今回は500万件ヒットしているので、 >> >> 0.5 * 5_000_000 = 2500000.0マイクロ秒 = 2.5秒 >> >> となって、まぁ、1秒以上かかりそうだなぁという感じはしますね。 >> >> 結果レコードセットが遅いということはわかったので、そんなに大 >> 量にヒットしないやつなら速いはずです。 > これで、語彙表に含まれる語句の出現回数が結構多いトークンを含む単語であっても、 > 絞込みの有の方が速度がでていた理由がわかりました。 役に立つ情報だったようでよかったです! > 当方の経験則上、全文検索結果が遅い場合、以下の3つの観点があるように > 思われます。 > > 1.検索がインデックスアクセスのみであるかどうか。 > 2.語彙集に含まれる語句の出現回数が非常に多いかどうか。 > (影響がありそうな出現回数は、本当に非常に非常に多い場合で > 大抵の規模の場合は耐えると思われます) > 3.検索結果レコード数が多いかどうか。 > (そこまでの劣化はないものの、結果レコード数に応じて数秒程度の劣化は生じうる。) > > このあたりでチューニングしていけば、大抵0.1s〜数秒以内には、結果が得られそうですね! そうですね!妥当だと思います! -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) Groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コミットへのコメントサービスはじめました: http://www.clear-code.com/services/commit-comment.html