MariaDBにMroongaはバンドルされていますが、
TokenizerとしてMecabを使う際は、少し注意が必要です。
公式には、以下のように書かれていますが、手順を残しておきます。
https://mariadb.com/kb/en/library/mroonga-overview/
「Tokenise using MeCab. Required Groonga to be buillt with MeCab support.」
なお、OSはCentOS7、MariaDBのバージョンは、10.3.8です。
まずは、バンドルされているMroongaのインストールを見ていきます。
公式(https://mariadb.com/kb/en/library/about-mroonga/)を参考にしています。
1.プラグインのインストール
MariaDB [(none)]> INSTALL SONAME 'ha_mroonga';
2.Mroongaのインストール確認
MariaDB [(none)]> show engines;
+--------------------+---------+-----------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                 | Transactions | XA   | Savepoints |
+--------------------+---------+-----------------------------------------+--------------+------+------------+
| CSV                | YES     | Stores tables as CSV files              | NO           | NO   | NO         |
:(省略)
| Mroonga            | YES     | CJK-ready fulltext search, column store | NO           | NO   | NO         |
:(省略)
+--------------------+---------+-----------------------------------------+--------------+------+------------+
3.UDFの作成
公式(https://mariadb.com/kb/en/library/creating-mroonga-user-defined-functions/)より引用。
4.プラグインの確認
MariaDB [(none)]> show plugins;
+-------------------------------+----------+--------------------+---------------+---------+
| Name                          | Status   | Type               | Library       | License |
+-------------------------------+----------+--------------------+---------------+---------+
| binlog                        | ACTIVE   | STORAGE ENGINE     | NULL          | GPL     |
:(省略)
| Mroonga                       | ACTIVE   | STORAGE ENGINE     | ha_mroonga.so | GPL     |
| Mroonga_stats                 | ACTIVE   | INFORMATION SCHEMA | ha_mroonga.so | GPL     |
+-------------------------------+----------+--------------------+---------------+---------+
5.Tokenizerの確認
MariaDB [(none)]> select json_detailed(mroonga_command("tokenize TokenBigram '東京都'"));
+----------------------------------------------------------------+
| json_detailed(mroonga_command("tokenize TokenBigram '東京都'")) |
+----------------------------------------------------------------+
| [
    {
        "value": "東京",
        "position": 0,
        "force_prefix": false
    },
    {
        "value": "京都",
        "position": 1,
        "force_prefix": false
    },
    {
        "value": "都",
        "position": 2,
        "force_prefix": false
    }
]      |
+----------------------------------------------------------------+
MariaDB [(none)]> select json_detailed(mroonga_command("tokenize TokenMecab '東京都'"));
ERROR 1026 (HY000): [tokenize] nonexistent tokenizer 
TokenBigramは使えるが、TokenMecabは使えない。。。
このように、公式にバンドルされているMroongaではMecabが使えないので、
Groongaレポジトリから取得するMroongaを使うには、
一旦削除しておく必要があります。
MariaDB [(none)]> UNINSTALL SONAME 'ha_mroonga';
ここからGroongaレポジトリからもろもろ取得し、設定していきます。
主な設定方法は、以下の公式ページに記載されています。
http://mroonga.org/ja/docs/install/centos.html#centos-7-with-mariadb-10-3-package
1.レポジトリのインストール
# yum install -y https://packages.groonga.org/centos/groonga-release-latest.noarch.rpm
2.Mroonga関連インストール
# yum install -y --enablerepo=epel mecab mecab-devel groonga groonga-tokenizer-mecab mariadb-10.3-mroonga
※依存関係により、この時点でMariaDB-Serverのバージョンが上がる可能性あるため、mysql_upgradeを適宜実行する。
3.Mecabの確認
$ mecab -D
filename:    /usr/lib64/mecab/dic/ipadic/sys.dic
version:    102
charset:    utf8
type:    0
size:    392126
left size:    1316
right size:    131
$ echo '東京都' | mecab
東京    名詞,固有名詞,地域,一般,,,東京,トウキョウ,トーキョー
都    名詞,接尾,地域,,,*,都,ト,ト
EOS
4.Groongaの確認
$ groonga --version | head -1
Groonga 8.0.9 [linux-gnu,x86_64,utf8,match-escalation-threshold=0,nfkc,mecab,msgpack,mruby,onigmo,zlib,lz4,zstd,epoll]
ここまでで、Mecabが無事動作し、Groongaからも認識されていればOK。
5.Mroongaプラグインをインストール
MariaDB [(none)]> source /usr/share/mroonga/install.sql;
上記コマンドで、Groonga提供のMroongaライブラリがインストールされ、UDFも上書きされます。
6.プラグインの状態確認
MariaDB [(none)]> show plugins;
+-------------------------------+----------+--------------------+------------------------+---------+
| Name                          | Status   | Type               | Library                | License |
+-------------------------------+----------+--------------------+------------------------+---------+
| binlog                        | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |
:
| Mroonga                       | ACTIVE   | STORAGE ENGINE     | ha_mroonga_official.so | GPL     |
+-------------------------------+----------+--------------------+------------------------+---------+
お、共有ライブラリの名称が「ha_mroonga.so」から「ha_mroonga_official.so」に変わっていますね。
7.Mecabの実行確認
MariaDB [(none)]> select json_detailed(mroonga_command("tokenize TokenMecab '東京都'"));
+---------------------------------------------------------------+
| json_detailed(mroonga_command("tokenize TokenMecab '東京都'")) |
+---------------------------------------------------------------+
| [
    {
        "value": "東京",
        "position": 0,
        "force_prefix": false,
        "force_prefix_search": false
    },
    {
        "value": "都",
        "position": 1,
        "force_prefix": false,
        "force_prefix_search": false
    }
]    |
+---------------------------------------------------------------+
おおー、無事にMariaDBからMecabを使えるようになりました。
長くなりましたが、以上です。