Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

mroongaのインストール/アンインストール時に発行するするクエリと、その用途をまとめて解説

mroongaのプラグインインストール・アンインストールを手動で行いたい方向けのメモ。
MySQLが起ち上がっていない状態で、プラグインをインストールした時にも必要ですね。

更新履歴

2014年1月8日:mroonga-3.07の新機能であるmroonga_escapeのトピックを追加

インストール時に実行しているクエリ

DELETE IGNORE FROM mysql.plugin WHERE name = 'mroonga';
INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';
CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.so';
CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mroonga.so';
CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga.so';
続きを読む

mroongaで「ERROR 1005 (HY000): already used name was assigned」エラーが起きた際の復旧手順

存在しないテーブルなのに、テーブルが作れなくなった。
そんな現象に遭遇した時のトラブルシューティングを紹介します。

  • DROP TABLE ...の後にCREATE TABLE ....とした所、消したはずのテーブルが作れない
  • show tables;を見る限り存在しないので、MySQLとしては存在しないと言える
  • mroongaの管理データの中にのみテーブルが残存している様子
続きを読む

groonga/mroongaのトークナイザー(tokenizer)の挙動を追ってみる

トークナイズ機能は、全文検索機能に無くてはならない機能です。
欧米圏であれば、最低限スペース区切りに対応していれば実用的に使えます。
しかし、中国語、日本語、韓国語への対応をする場合には、CJK対応言われる実装が必要です。
汎用的な分かち書き(トークナイズ)方法としては、n-gram方式があり、uni-gramやbi-gram、tri-gramが有名です。
n-gramは汎用ではありますが、機械的に分解するが故に精度があまり高くなく、語彙の部分一致検索でしかありません。
そこで、品詞毎にトークナイズの出来る、MeCabやJumanといった形態素解析エンジンの出番となります。

mroongaでは、groonga-tokenizer-mecabというパッケージを追加することで、形態素解析エンジンのMeCabに対応します。
その他、Bigramの独自拡張にも対応しているようなので、それぞれどのような挙動を示すのか、実験してみたいと思います。
この結果を参考に、要件に見合ったトークナイザーを選べると良いですね。

続きを読む