MySQL + mnoGoSearch が動かない

数百万から数千万件程度の英文テキストのレコードを全文検索出来る状態にしたかったりするわけだが、主な検索対象は名詞句じゃなくて述部だったりするので、stemming しないと(自分の用途では)使い物にならないような気がする。*1
ってことで、mnoGoSearchMySQL 5.1 用の Full-text parser plugin があってそれが使えるっぽいので、インストールして使ってみようとしたら、こんな感じに。

mysql> insert into sentences (id, content) values ('1', 'This is test of mnogosearch & MySQL.');
ERROR 2013 (HY000): Lost connection to MySQL server during query

うーむ。動かん。何でだ。そのままだとコンパイル自体通らないから一応 patch をさらしておく。

--- src/spell.c.orig    2006-05-26 04:23:19.000000000 -0400
+++ src/spell.c 2006-12-04 16:23:40.000000000 -0500
@@ -1245,7 +1245,7 @@
 };


-mysql_declare_plugin
+mysql_declare_plugin(stemming)
 {
   MYSQL_FTPARSER_PLUGIN,
   &udm_parser_declaration,

というか stemmer の実装自体は手元にあるし*2、自力で各トークンを stemming してから検索用のカラムに格納したほうがいいような気がしてきた。あと Lucene を使うという手もあるけど、あれのスケーラビリティってどんなもんだろう。

*1:run で検索して runs がヒットしないのも困るし、かといって stem で検索して system が大量にヒットするのも困る。

*2:オープンソース実装もいっぱいあるけど