Mattermostの日本語フォーラムを作ってもらったりしたので、簡単にまとめてみました。
確認環境は以下になります。
- Mattermost 2.1.0
- CentOS 7.2
- MySQL 5.6.29
- Mroonga 6.01
- MySQL 5.7.11
- MySQL 5.6.29
MySQL 5.5 以前を利用している場合
Mattermostは非対応です。
参考: Software & Hardware Requirements — Mattermost 2.0 documentation
MySQL 5.6 ~ 5.7.5 を利用している場合
Mroonga ストレージエンジン を利用します。
Mroongaのインストール
1. インストール
$ sudo yum install -y http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
$ sudo yum makecache
$ sudo yum install -y mysql-community-mroonga
$ sudo systemctl restart mysqld
2. ストレージエンジンを変更
$ mysql mattermost -u mmuser -pmmuser_password
# Mroongaストレージエンジンが有効になっていることを確認
mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
...
| Mroonga | YES | CJK-ready fulltext search, column store | NO | NO | NO |
...
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
# PostsテーブルのストレージエンジンをMroongaに変更
mysql> ALTER TABLE `Posts` ENGINE = Mroonga;
ngram
ストレージエンジンをMroongaに変更するだけで有効になります。デフォルトでは「バイグラム(2-gram)」となっています。
形態素解析(MeCab)
ストレージエンジンをMroongaに変更した上で、以下の作業を行います。
1. MeCabトークナイザーのインストール
$ sudo yum install -y groonga-tokenizer-mecab
2. FULLTEXT INDEXの再構築
$ mysql mattermost -u mmuser -pmmuser_password
mysql> ALTER TABLE `Posts` DROP INDEX idx_posts_message_txt;
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER TABLE `Posts` ADD FULLTEXT INDEX idx_posts_message_txt (`Message`) COMMENT 'parser "TokenMecab"';
Query OK, 0 rows affected (0.02 sec)
その他の全文検索パーサ
Mroongaが対応しているトークナイザー(ユニグラム、トリグラム、etc)を利用することができます。
参考: 4.3. ストレージモード — Mroonga v6.01 documentation
MySQL 5.7.6以降を利用している場合
標準で同梱されているngram Full-Text Parser Pluginもしくは MeCab Full-Text Parser Plugin を利用します。
ngram
形態素解析(MeCab)
1. MeCab, Mecab IPA-dictionaryのインストール
$ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
$ sudo yum -y install mecab mecab-ipadic
2. my.cnfに設定を追加
my.cnf
[mysqld]
# MeCab Full-Text Parser Plugin Settings
loose-mecab-rc-file=/etc/mecabrc
innodb_ft_min_token_size=1
mysqldの再起動を忘れずに。
$ sudo systemctl restart mysqld
3. MeCab Full-Text Parser Pluginのインストール
$ mysql -u root -p
mysql> INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
Query OK, 0 rows affected (0.04 sec)
# 確認
mysql> SHOW PLUGINS;
+----------------------------+----------+--------------------+----------------------+---------+
| Name | Status | Type | Library | License |
+----------------------------+----------+--------------------+----------------------+---------+
...
| mecab | ACTIVE | FTPARSER | libpluginmecab.so | GPL |
+----------------------------+----------+--------------------+----------------------+---------+
4. FULLTEXT INDEXの再構築
$ mysql mattermost -u mmuser -pmmuser_password
mysql> ALTER TABLE `Posts` DROP INDEX idx_posts_message_txt;
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER TABLE Posts ADD FULLTEXT INDEX idx_posts_message_txt (`Message`) WITH PARSER mecab;
Query OK, 0 rows affected (0.02 sec)
参考: N-gramと形態素解析の比較
以下のサイトがわかりやすいです。
- 第6回 N-gramと形態素解析との比較:検索エンジンを作る|gihyo.jp … 技術評論社
- 全文検索(索引文字列の抽出手法) - Wikipedia
- Ngram(N-gram)とは何か & 形態素解析との比較
以上、ご参考になれば幸いです。