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だし仕方ないかもだけど。