mroonga - An open-source storage engine for fast fulltext search with MySQL.

2. Installation Guide

If you use binary packages, MySQL related packages will be also installed when you install mroonga package.

We distribute packages for both 32-bit and 64-bit but we recommend that you should use 64-bit package for server. You should use 32-bit package just only for test or development. You will get no memory error with 32-bit package even if you just process medium size data.

Here we explain how to install for each environment.

2.1. Debian GNU/Linux squeeze

/etc/apt/sources.list.d/groonga.list:

deb http://packages.groonga.org/debian/ squeeze main
deb-src http://packages.groonga.org/debian/ squeeze main

Install

% sudo aptitude update
% sudo aptitude -V -D -y --allow-untrusted install groonga-keyring
% sudo aptitude update
% sudo aptitude -V -D -y install mysql-server-mroonga

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo aptitude -V -D -y install groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo aptitude -V -D -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.2. Debian GNU/Linux wheezy

/etc/apt/sources.list.d/groonga.list:

deb http://packages.groonga.org/debian/ wheezy main
deb-src http://packages.groonga.org/debian/ wheezy main

Install

% 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

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo apt-get -y install groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo apt-get -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.3. Debian GNU/Linux jessie

/etc/apt/sources.list.d/groonga.list:

deb http://packages.groonga.org/debian/ jessie main
deb-src http://packages.groonga.org/debian/ jessie main

Install

% 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

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo apt-get -y install groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo apt-get -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.4. Debian GNU/Linux sid

/etc/apt/sources.list.d/groonga.list:

deb http://packages.groonga.org/debian/ unstable main
deb-src http://packages.groonga.org/debian/ unstable main

Install

% sudo aptitude update
% sudo aptitude -V -D -y --allow-untrusted install groonga-keyring
% sudo aptitude update
% sudo aptitude -V -D -y install mysql-server-mroonga

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo aptitude -V -D -y install groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo aptitude -V -D -y install groonga-normalizer-mysql

Note

'utf8_unicode_ci' or 'utf8mb4_unicode_ci' will be supported in the future release.

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.5. Ubuntu 10.04 LTS Lucid Lynx

Note

You need to enable the universe section in Ubuntu's software sources.

Note

You need to enable the security update repository.

/etc/apt/sources.list.d/groonga.list:

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

Install

% 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

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo apt-get -y install groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo apt-get -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.6. Ubuntu 12.04 Precise Pangolin

Note

You need to enable the universe section in Ubuntu's software sources.

Note

You need to enable the security update repository.

/etc/apt/sources.list.d/groonga.list:

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

Install

% 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

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo apt-get -y install groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo apt-get -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.7. Ubuntu 12.10 Quantal Quetzal

Note

You need to enable the universe section in Ubuntu's software sources.

Note

You need to enable the security update repository.

/etc/apt/sources.list.d/groonga.list:

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

Install

% 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

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo apt-get -y install groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo apt-get -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.8. Ubuntu 13.04 Raring Ringtail

Note

You need to enable the universe section in Ubuntu's software sources.

Note

You need to enable the security update repository.

/etc/apt/sources.list.d/groonga.list:

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

Install

% 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

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo apt-get -y install groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo apt-get -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.9. CentOS 5

CentOS 5's MySQL packages should be removed beforehand if installed.

Remove existing MySQL packages

% sudo yum remove 'mysql*'

Install

% sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
% sudo yum makecache
% sudo yum install -y MySQL-server
% sudo service mysql start
% sudo yum install -y mysql-mroonga
(% /usr/bin/mysqladmin -u root password 'new-password')

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo yum install -y groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo yum install -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.10. CentOS 6

In CentOS 6, unlike in CentOS 5, we use CentOS's MySQL packages (version 5.1.x). So you don't need to remove CentOS's MySQL packages.

Install

% sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
% sudo yum makecache
% sudo yum install -y mysql-server
% sudo service mysqld start
% sudo yum install -y mysql-mroonga
(% /usr/bin/mysqladmin -u root password 'new-password')

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo yum install -y groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo yum install -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.11. Fedora 19

Install

% sudo rpm -ivh http://packages.groonga.org/fedora/groonga-release-1.1.0-1.noarch.rpm
% sudo yum makecache
% sudo yum install -y mysql-mroonga

If you want to use MeCab as a tokenizer. please install groonga-tokenizer-mecab package.

Install groonga-tokenizer-mecab package:

% sudo yum install -y groonga-tokenizer-mecab

Install groonga-tokenizer-mecab package:

% sudo yum install -y groonga-tokenizer-mecab

If you want to use MySQL compatible COLLATION such as 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' or 'utf8mb4_unicode_ci', please install groonga-normalizer-mysql package.

Install groonga-normalizer-mysql package:

% sudo yum install -y install groonga-normalizer-mysql

Note

If you don't specify MySQL compatible case insensitive COLLATION, MySQL incompatible COLLATION of groonga is used. MySQL compatible case insensitive COLLATION are 'utf8_general_ci', 'utf8mb4_general_ci', 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

2.12. Mac OS X

Install:

% brew install https://raw.github.com/mroonga/homebrew/master/mroonga.rb --use-homebrew-mysql

2.13. Windows

Mroonga binary for Windows is provided with MariaDB binary because some changes are needed for building mroonga for Windows.

2.13.1. Installer

None for now.

2.13.2. Zip

For 32-bit environment, download mariadb-10.0.3-mroonga-3.06-win32.zip and extract it.

For 64-bit environment, download mariadb-10.0.3-mroonga-3.06-winx64.zip and extract it.

2.13.3. Install mroonga

Start mysqld, connect to it by mysql client, and install it by "INSTALL PLUGIN" command.

mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga';

If "mroonga" is displayed in "SHOW ENGINES" command result like below, mroonga is well installed.

mysql> SHOW ENGINES;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| mroonga    | YES     | Fulltext search, column base                               | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
6 rows in set (0.00 sec)

Next install UDF (User-Defined Function).

To get the record ID assigned by groonga in INSERT, install last_insert_grn_id function.

Invoke CREATE FUNCTION like the following.

mysql> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga';

To enable snippet (keyword in context) UDF, install mroonga_snippet function.

Invoke CREATE FUNCTION like the following.

mysql> CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mroonga';

To enable invoking groonga query from mroonga, install mroonga_command function.

Invoke CREATE FUNCTION like the following.

mysql> CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga';

2.14. Install from the source code

Here we explain how to install from the source code. If your environment is not listed above, you need to do so.

2.14.1. Japanese morphological analysis system (MeCab)

If you want to use indexes of tokenizing of each morpheme for full text search, install MeCab before installing groonga.

2.14.2. Download

To install the released version, download the tarball from packages.groonga.org .

To install the latest source code, clone the code from GitHub and invoke ./autogen.sh (GNU Autotools are required). This way is aimed at skilled developpers. If not, we recommend using the tarball.

% git clone https://github.com/mroonga/mroonga.git
% cd mroonga
% ./autogen.sh

2.14.3. Requirements

MySQL and groonga should be already installed.

And MySQL's source code is also required to build mroonga.

2.14.4. Install MySQL

Download the latest MySQL 5.5 source code, then build and install it.

http://dev.mysql.com/downloads/mysql/

Here we assume that we use mysql-5.5.31 and its source code is extracted in the following directory.

/usr/local/src/mysql-5.5.31

And we assume that MySQL is installed in the following directory.

/usr/local/mysql

2.14.5. Install groonga

Build and install the latest groonga.

http://groonga.org/docs/

Here we assume that libgroonga is installed in the standard location like /usr/lib etc.

2.14.6. Build mroonga

Run configure script by specifying the location of MySQL source code with --with-mysql-source and the path of mysql_config command with --with-mysql-config.

./configure \
  --with-mysql-source=/usr/local/src/mysql-5.5.31 \
  --with-mysql-config=/usr/local/mysql/bin/mysql_config

If groonga is not installed in the standard location like /usr/lib, you need to specify its location by PKG_CONFIG_PATH. For example, if groonga is installed with --prefix=$HOME/local, do like the following

./configure \
  PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig \
  --with-mysql-source=/usr/local/src/mysql-5.5.31 \
  --with-mysql-config=/usr/local/mysql/bin/mysql_config

Then invoke "make".

make

2.14.7. Install mroonga

By invoking "make install", ha_mroonga.so will be installed in MySQL's plugin directory.

make install

Then start mysqld, connect to it by mysql client, and install it by "INSTALL PLUGIN" command.

mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';

If "mroonga" is displayed in "SHOW ENGINES" command result like below, mroonga is well installed.

mysql> SHOW ENGINES;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| mroonga    | YES     | Fulltext search, column base                               | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
6 rows in set (0.00 sec)

Next install UDF (User-Defined Function).

To get the record ID assigned by groonga in INSERT, install last_insert_grn_id function.

Invoke CREATE FUNCTION like the following.

mysql> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.so';

To enable snippet (keyword in context) UDF, install mroonga_snippet function.

Invoke CREATE FUNCTION like the following.

mysql> CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mroonga.so';

To enable invoking groonga query from mroonga, install mroonga_command function.

Invoke CREATE FUNCTION like the following.

mysql> CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga.so';

2.15. Install from the source code with MariaDB

Here we explain how to install from the source code with MariaDB. If your environment is not listed above, you need to do so.

2.15.1. Japanese morphological analysis system (MeCab)

If you want to use indexes of tokenizing of each morpheme for full text search, install MeCab before installing groonga.

2.15.2. Download

Download mroonga tarball from packages.groonga.org .

Download MariaDB tarball from downloads.mariadb.org .

2.15.3. Requirements

Groonga should be already installed.

2.15.4. Install groonga

Build and install the latest groonga.

http://groonga.org/docs/

Here we assume that libgroonga is installed in the standard location like /usr/lib etc.

2.15.5. Build mroonga with MariaDB

Uncompress MariaDB tarball.

tar xvfz mariadb-10.0.2.tar.gz

Uncompress mroonga tarball then move into storage directory.

tar xvfz mroonga-3.03.tar.gz
mv mroonga-3.03 mariadb-10.0.2/storage/mroonga/

Run "cmake".

cd mariadb-10.0.2
cmake .

Then invoke "make".

make

2.15.6. Install mroonga with MariaDB

By invoking "make install", MariaDB and mroonga will be installed in "/usr/local/mysql" directory.

make install

Then start mysqld, connect to it by MariaDB client, and install it by "INSTALL PLUGIN" command.

mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';

If "mroonga" is displayed in "SHOW ENGINES" command result like below, mroonga is well installed.

mysql> SHOW ENGINES;
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
| MyISAM             | DEFAULT | MyISAM storage engine                                      | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| InnoDB             | NO      | Supports transactions, row-level locking, and foreign keys | NULL         | NULL | NULL       |
| mroonga            | YES     | CJK-ready fulltext search, column store                    | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                     | NO           | NO   | NO         |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.01 sec)

Next install UDF (User-Defined Function).

To get the record ID assigned by groonga in INSERT, install last_insert_grn_id function.

Invoke CREATE FUNCTION like the following.

mysql> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.so';

To enable snippet (keyword in context) UDF, install mroonga_snippet function.

Invoke CREATE FUNCTION like the following.

mysql> CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mroonga.so';

To enable invoking groonga query from mroonga, install mroonga_command function.

Invoke CREATE FUNCTION like the following.

mysql> CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga.so';