「Mysql/日本語全文検索」の版間の差分
提供: 初心者エンジニアの簡易メモ
行7: | 行7: | ||
id INT PRIMARY KEY AUTO_INCREMENT, | id INT PRIMARY KEY AUTO_INCREMENT, | ||
content VARCHAR(255), | content VARCHAR(255), | ||
− | FULLTEXT INDEX (content) | + | FULLTEXT INDEX ftx_fulltext(content) /*!50100 WITH PARSER `ngram` */ |
) COLLATE='utf8_bin' ENGINE=InnoDB; | ) COLLATE='utf8_bin' ENGINE=InnoDB; | ||
insert into diaries (content) values ("明日は晴れです"); | insert into diaries (content) values ("明日は晴れです"); | ||
行23: | 行23: | ||
insert into diaries (title,content) values ("晴!", "明日は晴れです"); | insert into diaries (title,content) values ("晴!", "明日は晴れです"); | ||
insert into diaries (title,content) values ("曇!", "明日は曇りです"); | insert into diaries (title,content) values ("曇!", "明日は曇りです"); | ||
− | select * from diaries where match( | + | select * from diaries where match(fulltext_column) against('晴れ'); |
− | select * from diaries where match( | + | select * from diaries where match(fulltext_column) against('曇!'); |
2017年5月9日 (火) 16:13時点における版
mysql5.7から日本語にも対応された
それまでは以下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('曇!');