Groonga Advent Calendar 2015の14日目の記事です。
Mroongaでは以下のようにCOMMENTにnormalizer "NormalizerAuto"などと書くことにより全文検索時に利用するNormalizerを変更することができます。
CREATE TABLE IF NOT EXISTS `tags` (
`tag` varchar(255) NOT NULL,
`text` varchar(1000) NOT NULL,
PRIMARY KEY (`tag`),
FULLTEXT KEY `text` (`text`) COMMENT 'normalizer "NormalizerAuto"'
) ENGINE=Mroonga DEFAULT CHARSET=utf8;
このようにすることでたとえば㍑をリットルで全文検索できます。
mysql> INSERT INTO tags VALUES("Hoge", "㍑");
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM tags WHERE MATCH(text) AGAINST("リットル" IN BOOLEAN MODE);
+------+------+
| tag | text |
+------+------+
| Hoge | ㍑ |
+------+------+
1 row in set (0.00 sec)
しかし、2015/11/29リリースMroonga5.10時点では、全文検索以外の一致検索には通常の照合順序が使われます。デフォルトだとutf8_general_ciが使われます。
mysql> SELECT * FROM tags WHERE text = "リットル";
Empty set (0.00 sec)
mysql> SELECT * FROM tags WHERE text = "㍑";
+------+------+
| tag | text |
+------+------+
| Hoge | ㍑ |
+------+------+
1 row in set (0.00 sec)
これではちぐはぐですね。そのうち、なんとかしたいです。