LoginSignup
2
2

More than 5 years have passed since last update.

Mroonga5.10ではノーマライザーをオプションで指定すると全文検索クエリ以外では利用されない

Last updated at Posted at 2015-12-14

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)

これではちぐはぐですね。そのうち、なんとかしたいです。

解決編

Mroongaで全文検索以外でGroongaのノーマライザーを使う方法

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2