Ubuntu 12.04にmroongaをインストール

groongaのMySQL版であるmroongaをインストールして、MySQLInnoDBを日本語の全文検索に対応させよう。

groongaのリポジトリを追加

/etc/apt/sources.list.d/groonga.listを以下の内容で作成する。

deb http://packages.groonga.org/ubuntu/ precise universe
deb-src http://packages.groonga.org/ubuntu/ precise universe

apt-getでインストール

ここら辺を参考にインストール。 http://mroonga.org/ja/docs/install.html

以下はトクナイザーとしてMeCabを使う場合。

> sudo apt-get update
> sudo apt-get -y --allow-unauthenticated install groonga-keyring
> sudo apt-get update
> sudo apt-get -y install mysql-server-mroonga
> sudo apt-get -y install groonga-tokenizer-mecab

インストールの確認

こんなSQLを投げて

SHOW VARIABLES LIKE 'mroonga_libgroonga_version';

こんな感じに出力されればOK

+-------------------------------------+
| Variable_name              | Value  |
+----------------------------+--------+
| mroonga_libgroonga_version | 3.1.1  |
+-------------------------------------+

使い方

mroongaをInnoDBのラッパーモードとして利用するにはENGINE = mroonga COMMENT = ‘engine "innodb”’と指定する。 これでトランザクションも日本語全文検索も使える。

CREATE TABLE hoge (
  id INTEGER AUTO_INCREMENT,
  PRIMARY KEY (id),
  text TEXT NOT NULL,
  FULLTEXT INDEX (text)
) ENGINE = mroonga COMMENT = ‘engine "innodb”’;

SELECT * FROM hoge WHERE MATCH (text) AGAINST (“日本語でおk”);

既存のテーブルを日本語の全文検索に対応させる

テーブルのDBエンジンとしてmroongaなInnoDBのラッパーモードを指定して、FULLTEXT INDEXを追加すればOK

ALTER TABLE テーブル名 ENGINE = mroonga COMMENT = 'engine "innodb"';
CREATE FULLTEXT INDEX テーブル名 ON テーブル名 (インデックス名);

ちなみに、インデックス名のデフォルト値はテーブル名と同じ。