雑記

インフラのことだったりプログラムのことだったりどうでもいいこと書いたり。要は雑記。

mronngaを試してみた

mroongaでテストしてみたよ。

環境

CentOS5.9(32bit)
CPU 1コア 3GHz
memory 1G
VMware上で作成
MySQL5.6 + mroonga3.01

準備

今回ははてなキーワードを使ってみた
http://d.hatena.ne.jp/keyword/%25A4%25CF%25A4%25C6%25A4%25CA%25A5%25AD%25A1%25BC%25A5%25EF%25A1%25BC%25A5%25C9%25B0%25EC%25CD%25F7%25A5%25D5%25A5%25A1%25A5%25A4%25A5%25EB

データ数は383,134件。
もうちょっと欲しかったけどまぁとりあえずは。

パーサ

パーサはデフォルトのTokenBigram。

テーブル

mroongaの動作モードはラッパーモードで。

CREATE TABLE keywords(
 id INT PRIMARY KEY,
 keyword text(255),
 kana varchar(1024),
 FULLTEXT INDEX(keyword)
) ENGINE = mroonga COMMENT = 'engine "innodb"' DEFAULT CHARSET=utf8;

計測

SQL

実行したSQLはこれ。

SELECT SQL_NO_CACHE COUNT(*) FROM keywords WHERE MATCH(keyword) AGAINST('適当なキーワード');

計測方法

適当なキーワードを100回検索かけてその平均時間を算出。
計測に使ったプログラムは自作のpython(MySQLdb利用)。

結果

こんな感じ

キーワード ヒット件数 時間
とある 20件 3msec
python 5件 3msec
化物語 328件 11msec
ささみさん 498件 3msec
ニャル 6件 3msec
こなちゃん 20件 16msec
mysql 20件 3msec
レールガン 25件 4msec
東京 1126件 8msec
mroonga 0件 2msec

うん、なかなかいい感じ。

でも

結果のゴミがきになるかなー。
bigramだし仕方ないかもだけど。