Horikoshi Yuki
horik****@gmail*****
2013年 12月 4日 (水) 18:32:56 JST
また久しぶりの投稿です。堀越と申します。
現在、以下の環境でmroongaを利用しています。
環境)
CentOS 6.3 (64bit)
groonga.x86_64 3.1.0-1.el6_18.wing
mysql56-mroonga.x86_64 3.10-1.el6_25.wing
(WING☆さん、いつもいつもありがとうございます)
FULLTEXTインデックスでの全文検索自体は非常に高速に動いているのですが、
掲題の通りFULLTEXTインデックス以外での絞り込みを利用した際、
全文検索でのヒット件数が多い場合(数千件〜)に速度が遅くなってしまいます。
具体的には以下のような利用を想定しています。
CREATE TABLE 名簿 (
id int unsigned, primary key auto_increment,
name text,
birth_year smallint unsigned,
fulltext index(name),
index `birth_year` (year)) ENGINE=mroonga default charset utf8;
INSERT INTO 名簿 数百万件のデータ
「山田さん」を検索
SELECT * FROM 名簿 WHERE MATCH(NAME) AGAINST ("山田")
→完了まで0.1秒以内
「40才以上の人」を検索
SELECT * FROM 名簿 WHERE birth_year > 1973
→完了まで0.1秒以内
「40歳以上の山田さん」を検索
SELECT * FROM 名簿 WHERE MATCH(NAME) AGAINST ("山田") AND birth_year > 1973
→完了まで数十秒
「40歳以上の山田さん」を生年順にページングで表示
SELECT * FROM 名簿 WHERE MATCH(NAME) AGAINST ("山田") AND birth_year >
1973 ORDER BY birth_year LIMIT 0,50
→完了まで数十秒
おそらく、この事象については以下のチケット
http://redmine.groonga.org/issues/447
に記載された内容だと思うのですが、現状mroongaで回避策などはありますか?
(チケット発行日が3年前でしたので、既に解決済みであれば申し訳ありません)
大変お恥ずかしい話なのですが、未だこの問題の解決方法が見つけられず
senna + tritonnからの移行が出来ておりません・・・・
何卒よろしくお願いいたします。