検索速度の比較実験

2008年12月24日(水)
早坂 良太

検索速度の比較実験

 前回は各全文検索システムでインデックスを作成し、インデクシングにかかる時間やインデックスのサイズを測定、比較しました。今回はその実験で作成したインデックスを用いて検索を行い、検索速度を測定、比較していきます。また、インデクシング時や検索時のリソース消費量についても測定を行い、比較します。

 検索速度の測定では、文書数1万から100万までのインデックスをそれぞれ検索したときにかかる時間を測定します。検索はWebサーバー上で動作している検索ページに対して行います。検索を要求し、時間を測定するクライアントにはApache JMeterを使用します。

 1回の測定では同時に20スレッドを用意し、1スレッドでキーワードと文書の取得範囲を変えた5種類の検索を25回繰り返します。つまり、20×5×25=2500回分の検索時間を測定します。

 検索条件は以下のものを使用しました。

・検索キーワード "ブログ" の21-30件目
・検索キーワード "光" の1-10件目
・検索キーワード "computer" の11-20件目
・検索キーワード "映画" の101-150件目
・検索キーワード "携帯電話" の51-60件目

 Namazuの検索実験では、Namazuのパッケージに含まれるnamazu.cgiを使用しました。また、WebサーバーにはApache HTTP Server 2.2.3を使用しました。

 Luceneの検索実験では、JSPを用いてテストページを作成しました。WebサーバーにはApache Tomcat 6.0.18を使用しました。

 Estraierの検索実験では、Estraierのパッケージに含まれるestserverという検索サーバーを使用しました。

 Hyper Estraierの実験では、Hyper Estraierのパッケージに含まれるestseek.cgiを使用しました。また、WebサーバーにはNamazuと同じくApache HTTP Server2.2.3を使用しました。

 Sennaの検索実験では、JSPを用いてテストページを作成しました。WebサーバーにはApache Tomcat 6.0.18を使用しました。

 今回の実験では検索ページに対して検索を行う実験をしていますが、この場合ApacheやTomcatなどWebサーバーの性能にも影響されてしまいます。本来、全文検索システムの検索性能だけを比較するのであれば、コマンドラインで動作するプログラムを比較した方が、より検索にかかる時間だけを測定することができます。

 しかし、今回はWebサイトの検索機能として使うのはどの全文検索システムがいいのか?という趣旨ですので、あえてWebサイトの検索機能として使う場合の性能を測定しています。なお、ApacheやTomcatについてはほとんどチューニングを行っていません。利用したWebクライアント、Webサーバーを以下にまとめます。

・Apache JMeter(http://jakarta.apache.org/jmeter/
・Apache HTTP Server(http://httpd.apache.org/
・Apache Tomcat(http://tomcat.apache.org/

検索速度の測定結果と考察

 検索速度の測定の結果、Namazu、形態素解析で単語分割したときのLucene、Sennaが同程度の性能でした。

 Namazuはほぼ平均100ms前後となっており、速度が安定していましたが、最小値、最大値ではLucene(形態素解析)よりもやや大きい値になっています。

 Lucene(形態素解析)は平均、最小、最大のどの値でも最小かそれに近い値となっていましたが、平均値を見ると文書数の増加につれて検索時間が増加傾向にあります。

 Sennaもインデクシングが可能だった文書数10万までの範囲では、Lucene(形態素解析)と同じかさらに高速な検索を行えましたが、こちらも平均値を見ると文書数の増加につれて検索時間が増加しています。

 検索時間の最小値では、ほかのシステムが10ms以下を維持しているのに対して、Hyper Estraierだけは文書数40万を境に20ms前後から120ms前後へと急激に増加しています。

 検索時間の最大値では、EstraierとHyper Estraierが最初から10秒を超えています。Lucene(N-gram)は最初はそれほど時間がかかっていませんが、文書数の増加につれて40秒まで検索時間が増加しています。

 なお、検索キーワード別に見ると、Lucene(N-gram)とHyper Estraierでは"ブログ"で検索したときが特に遅く、Estraierでは"映画"で検索したときが特に遅くなっています。これらの検索キーワードはほかの検索キーワードに比べてヒット数が多い単語です。検索性能においては、ヒット数が大きな影響を及ぼすと考えられます。

 続いて、リソース消費量の比較実験の結果を紹介します。

電気通信大学 電気通信学研究科 情報工学専攻を修了。尾内・林研究室では検索エンジンをテーマとして研究。全文検索システムの速度性能比較や、検索エンジンの構築を行った。現在は日本アルゴリズム株式会社に所属している。http://www.nalgo.co.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています