facebook twitter hatena line email

「Mysql/日本語全文検索」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(mysql5.7から日本語にも対応された)
行30: 行30:
 
  select * from diaries where match(fulltext_column) against('晴れ');
 
  select * from diaries where match(fulltext_column) against('晴れ');
 
  select * from diaries where match(fulltext_column) against('曇!');
 
  select * from diaries where match(fulltext_column) against('曇!');
 +
 +
==mecabを使う==
 +
$ vi /etc/my.cnf
 +
[mysqld]
 +
loose-mecab-rc-file=/etc/mecabrc
 +
innodb_ft_min_token_size=2
 +
$ sudo /etc/rc.d/init.d/mysqld restart
 +
mysql> INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
 +
mysql> SHOW PLUGINS;
 +
| Name                      | Status  | Type              | Library          | License
 +
| mecab                      | ACTIVE  | FTPARSER          | libpluginmecab.so | GPL

2017年7月5日 (水) 00:21時点における版

mysql5.7から日本語全文検索にも対応された

初期設定なしで、ngram2であれば使える。 mecabを入れれば分かち書きが使えるようになる。

mysql5.6までは

Mroonga [ショートカット]

それまでは以下mroongaでしか使えなかった。

ngram2での検索サンプル

CREATE TABLE diaries (
 id INT PRIMARY KEY AUTO_INCREMENT,
 content VARCHAR(255),
 FULLTEXT INDEX ftx_fulltext(content) /*!50100 WITH PARSER `ngram` */ 
) COLLATE='utf8_bin' ENGINE=InnoDB;
insert into diaries (content) values ("明日は晴れです");
insert into diaries (content) values ("明日は曇りです");
select * from diaries where match(content) against('晴れ');

ngram2での検索サンプル(複数カラムの検索の場合)

CREATE TABLE diaries (
 id INT PRIMARY KEY AUTO_INCREMENT,
   title VARCHAR(64) NULL DEFAULT NULL,
   content TEXT NULL,
   fulltext_column TEXT AS (CONCAT(title, ' ', content)) STORED,
   FULLTEXT INDEX ftx_fulltext (fulltext_column) /*!50100 WITH PARSER `ngram` */ 
) COLLATE='utf8_bin' ENGINE=InnoDB;
insert into diaries (title,content) values ("晴!", "明日は晴れです");
insert into diaries (title,content) values ("曇!", "明日は曇りです");
select * from diaries where match(fulltext_column) against('晴れ');
select * from diaries where match(fulltext_column) against('曇!');

mecabを使う

$ vi /etc/my.cnf
[mysqld]
loose-mecab-rc-file=/etc/mecabrc
innodb_ft_min_token_size=2
$ sudo /etc/rc.d/init.d/mysqld restart
mysql> INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
mysql> SHOW PLUGINS;
| Name                       | Status   | Type               | Library           | License
| mecab                      | ACTIVE   | FTPARSER           | libpluginmecab.so | GPL