LoginSignup
16
17

More than 5 years have passed since last update.

CentOS6.5でMariaDBに新しくバンドルされた全文検索エンジンMroongaを使う

Last updated at Posted at 2014-12-10

先月、MariaDBにMroongaがバンドルされたので、早速インストールしてみました。

まだ公式ドキュメントに手順がなかったので調べながらでしたが、それでも30分かからずに終わったので感動的でした。

環境

CentOS :
6.5
MariaDB:
10.0.15
Mroonga:
4.06

手順

最初に各種パッケージを最新にアップデート

$ sudo yum update -y

MariaDBの導入

Mroongaがバンドルされている、10.0.15をインストールします。

リポジトリの追加
$ sudo rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

$ sudo vi /etc/yum.repos.d/mariadb.repo
$ cat /etc/yum.repos.d/mariadb.repo
------------------------------
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0.15/centos6-x86
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=0
------------------------------
インストール
$ sudo rpm -e --nodeps mysql-libs    # mysql-libsは干渉するので先に消しておきます。

$ sudo yum install -y --enablerepo=mariadb MariaDB-devel MariaDB-client MariaDB-server
起動確認
$ sudo service mysql start   # MariaDBでもmysqlなのね…

$ sudo /usr/bin/mysqladmin -u root password 'mysqlpass'
$ sudo /usr/bin/mysqladmin -u root -h v157-7-239-240.z1d8.static.cnode.jp password 'mysqlpass'

$ mysql -uroot -pmysqlpass
> exit

MariaDBのインストールはこれでOKです。

適宜、必要に応じてmy.cnfを編集してください。

Mroongaを有効にする

MariaDBにバンドルされているMroongaはデフォルトでは無効状態となっています。
これを有効にしてあげます。

念のため、本当に無効になっているのか確認。

事前確認
SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
| FEDERATED          | YES     | FederatedX pluggable storage engine                                        | YES          | NO   | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                                     | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)

一覧に表示されないという事から、無効になっていると確認できます。

以下のコマンドで有効化します。

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';
CREATE FUNCTION mroonga_escape RETURNS STRING SONAME 'ha_mroonga.so';
事後確認
SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| Mroonga            | YES     | CJK-ready fulltext search, column store                                    | NO           | NO   | NO         |
| FEDERATED          | YES     | FederatedX pluggable storage engine                                        | YES          | NO   | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                                     | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
11 rows in set (0.00 sec)

Mroongaが加わったことを確認できたら終わりです。
サーバの再起動は不要です。

びっくりするぐらい手軽です。

制約事項

インストールがとても簡単なバンドル版ですが、残念ながら、以下のような制約があります。

  • TokenMecabが使えない。
  • MySQL由来のNormalizer(名前にMySQLと入ってる奴)が使えない。 勘違いでした(2014/12/18追記)
  • 10.0.15でバンドルされたMroongaは4.06なので、新機能のトークンフィルターが使えない。

結構、厳しいです。

これらの制約のため、バンドル版のMroongaはあくまで「お手軽に使いたい時」用という位置づけになりそうです。今の所。
こういった制約が受け入れられない方は、従来通り、ソースコードから入れましょう。こちらの手順が参考になるかもしれません。

16
17
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17