5.7.6 DMRではutf8mb4でのFTインデックスの作成が出来ませんでしたが、
5.7.7 RCで以下のバグ修正が行われたので、基本的なmecab設定をMySQL5.7.7RCにて確認。
今回のリリースで、5.7はRC(リリースキャンディデート)になったので、次のバージョンでGAになり色々な用途で使えるようになりそうです。
Changes in MySQL 5.7.7 (2015-04-08, Release Candidate)
InnoDB: The InnoDB MeCab full-text parser plugin now supports the eucjpms,
cp932, and utf8mb4 character sets. (Bug #20534096)
直接関係ないですが、5.7.7からはInnoDBのDefaultファイルフォーマットがBarracudaに変更されています。
Tableデータの圧縮を使う方には、手間が省けて良い変更かと思います。
http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-7.html
The innodb_file_format default value was changed to Barracuda.
The previous default value was Antelope. This change allows tables to use Compressed or Dynamic row formats.
root@localhost [mecab]> select @@version; +--------------+ | @@version | +--------------+ | 5.7.7-rc-log | +--------------+ 1 row in set (0.00 sec) root@localhost [mecab]> select PLUGIN_NAME,PLUGIN_VERSION,PLUGIN_LICENSE from information_schema.plugins where PLUGIN_NAME IN ('ngram','mecab'); +-------------+----------------+----------------+ | PLUGIN_NAME | PLUGIN_VERSION | PLUGIN_LICENSE | +-------------+----------------+----------------+ | ngram | 0.1 | GPL | | mecab | 0.1 | GPL | +-------------+----------------+----------------+ 2 rows in set (0.00 sec) root@localhost [mecab]> root@localhost [mecab]> CREATE TABLE M_DEMO_MB4 -> ( -> FTS_M_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, -> title VARCHAR(100), -> FULLTEXT INDEX mecab_idx(title) WITH PARSER mecab -> ) Engine=InnoDB CHARACTER SET utf8mb4; Query OK, 0 rows affected (0.03 sec) root@localhost [mecab]>
テストデータを入れて、全文検索の基本動作が問題無い事を確認。
root@localhost [mecab]> INSERT INTO M_DEMO_MB4 (title) VALUES ('東京都は日本の首都です'),('京都と大阪は日本の府です'); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 root@localhost [mecab]> INSERT INTO M_DEMO_MB4 (title) VALUES ('mysql'); Query OK, 1 row affected (0.01 sec) root@localhost [mecab]> INSERT INTO M_DEMO_MB4 (title) VALUES ('MYSQL'); Query OK, 1 row affected (0.00 sec) root@localhost [mecab]> INSERT INTO M_DEMO_MB4 (title) VALUES ('MySQL'); Query OK, 1 row affected (0.00 sec) root@localhost [mecab]> INSERT INTO M_DEMO_MB4 (title) VALUES ('マイエスキューエル'); Query OK, 1 row affected (0.00 sec) root@localhost [mecab]> INSERT INTO M_DEMO_MB4 (title) VALUES ('マイエスキューエル'); Query OK, 1 row affected (0.00 sec) root@localhost [mecab]> INSERT INTO M_DEMO_MB4 (title) VALUES ('まいえすきゅーえる'); Query OK, 1 row affected (0.00 sec) root@localhost [mecab]> root@localhost [mecab]> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE ORDER BY doc_id, position; Empty set (0.01 sec) root@localhost [mecab]> SET GLOBAL innodb_ft_aux_table="mecab/M_DEMO_MB4"; Query OK, 0 rows affected (0.00 sec) root@localhost [mecab]> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE ORDER BY doc_id, position; +-----------------------------+--------------+-------------+-----------+--------+----------+ | WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION | +-----------------------------+--------------+-------------+-----------+--------+----------+ | 東京 | 2 | 2 | 1 | 2 | 0 | | 日本 | 2 | 3 | 2 | 2 | 12 | | 首都 | 2 | 2 | 1 | 2 | 21 | | です | 2 | 3 | 2 | 2 | 27 | | 京都 | 3 | 3 | 1 | 3 | 0 | | 大阪 | 3 | 3 | 1 | 3 | 9 | | 日本 | 2 | 3 | 2 | 3 | 18 | | です | 2 | 3 | 2 | 3 | 30 | | mysql | 4 | 6 | 3 | 4 | 0 | | mysql | 4 | 6 | 3 | 5 | 0 | | mysql | 4 | 6 | 3 | 6 | 0 | | マイエスキューエル | 7 | 7 | 1 | 7 | 0 | | マイエスキューエル | 8 | 8 | 1 | 8 | 0 | | いえ | 9 | 9 | 1 | 9 | 3 | | すき | 9 | 9 | 1 | 9 | 9 | | える | 9 | 9 | 1 | 9 | 21 | +-----------------------------+--------------+-------------+-----------+--------+----------+ 16 rows in set (0.00 sec) root@localhost [mecab]> SELECT FTS_M_ID,title,MATCH (title) AGAINST('日本の首都' IN NATURAL LANGUAGE MODE) AS score FROM M_DEMO_MB4; +----------+--------------------------------------+--------------------+ | FTS_M_ID | title | score | +----------+--------------------------------------+--------------------+ | 1 | 東京都は日本の首都です | 1.178047776222229 | | 2 | 京都と大阪は日本の府です | 0.3624762296676636 | | 3 | mysql | 0 | | 4 | MYSQL | 0 | | 5 | MySQL | 0 | | 6 | マイエスキューエル | 0 | | 7 | マイエスキューエル | 0 | | 8 | まいえすきゅーえる | 0 | +----------+--------------------------------------+--------------------+ 8 rows in set (0.00 sec) root@localhost [mecab]> SELECT FTS_M_ID,title,MATCH (title) AGAINST('日本の首都' IN BOOLEAN MODE) AS score FROM M_DEMO_MB4; +----------+--------------------------------------+-------------------+ | FTS_M_ID | title | score | +----------+--------------------------------------+-------------------+ | 1 | 東京都は日本の首都です | 1.178047776222229 | | 2 | 京都と大阪は日本の府です | 0 | | 3 | mysql | 0 | | 4 | MYSQL | 0 | | 5 | MySQL | 0 | | 6 | マイエスキューエル | 0 | | 7 | マイエスキューエル | 0 | | 8 | まいえすきゅーえる | 0 | +----------+--------------------------------------+-------------------+ 8 rows in set (0.00 sec) root@localhost [mecab]>
PlanetMySQL Voting: Vote UP / Vote DOWN