[groonga-dev,01965] Re: FULLTEXTインデックス以外での絞り込みについて

Back to archive index

Naoya Murakami visio****@gmail*****
2013年 12月 7日 (土) 00:45:02 JST


お世話になっております。村上です。

2013年12月6日 17:18 Kouhei Sutou <kou****@clear*****>:

> 須藤です。
>
> In <JxzEf****@netag*****>
>   "[groonga-dev,01944] Re: FULLTEXTインデックス以外での絞り込みについて" on Fri, 06 Dec 2013
> 11:13:11 +0900,
>   sinoh****@netag***** 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秒以上かかりそうだなぁという感じはしますね。
>
> 結果レコードセットが遅いということはわかったので、そんなに大
> 量にヒットしないやつなら速いはずです。
>


お!ちゃんと読んでみて気づいたのですが、
結果レコードセットが非常に多いと結構時間がかかるんですね!

絞込みなし、検索結果が1件なのに、数十秒かかっていたパターンもあったり、
語彙集に含まれる語句の出現回数が結構多いトークンを含む文章であっても、
絞込み無しだと数秒で、絞込みありだと0.数秒になったケースもあって、
何でかなぁと思っていました。

これで、語彙表に含まれる語句の出現回数が結構多いトークンを含む単語であっても、
絞込みの有の方が速度がでていた理由がわかりました。

当方の経験則上、全文検索結果が遅い場合、以下の3つの観点があるように
思われます。

1.検索がインデックスアクセスのみであるかどうか。
2.語彙集に含まれる語句の出現回数が非常に多いかどうか。
(影響がありそうな出現回数は、本当に非常に非常に多い場合で
大抵の規模の場合は耐えると思われます)
3.検索結果レコード数が多いかどうか。
(そこまでの劣化はないものの、結果レコード数に応じて数秒程度の劣化は生じうる。)

このあたりでチューニングしていけば、大抵0.1s〜数秒以内には、結果が得られそうですね!

以上、よろしくお願いします。



groonga-dev メーリングリストの案内
Back to archive index