mail_babir****@yahoo*****
mail_babir****@yahoo*****
2013年 4月 21日 (日) 09:51:11 JST
お世話になっております。
田辺と申します。
連投となってしまい失礼します。
同じくutf8_unicode_ciに関する内容ですが、先ほどとは別件で気になる挙動を確認しましたので、ご連絡させて頂きました。
mroongaはwingリポジトリのものを利用しています。
mroonga_version 3.02
mroonga_libgroonga_version 3.0.2
MySQL 5.5.30
具体的には、utf8_unicode_ciカラムに複合インデックスを貼った場合に、LIKE検索において想定通りの動作ができていないように思われる点です。
以下、再現手順となります。
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`main` varchar(255) NOT NULL COLLATE 'utf8_unicode_ci',
`grp` varchar(255) NOT NULL COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`id`),
INDEX normal (`main`, `grp`)
) ENGINE=mroonga DEFAULT CHARSET=utf8;
INSERT INTO `test`(`main`, `grp`) VALUES ('ぶらっく', 'tag');
INSERT INTO `test`(`main`, `grp`) VALUES ('ブラック', 'tag');
SELECT * FROM `test` WHERE `main` LIKE 'ふ%' AND grp = 'tag'
0件
SELECT * FROM `test` WHERE `main` LIKE 'ブ%' AND grp = 'tag'
1件
ALTER TABLE `test` DROP INDEX (`normal`);
SELECT * FROM `test` WHERE `main` LIKE 'ふ%' AND grp = 'tag'
2件
SELECT * FROM `test` WHERE `main` LIKE 'ブ%' AND grp = 'tag'
2件
五十音順等で一覧表示する際、前方一致で検索を行うことがあるのですが、その際は濁音・半濁音は無視したいため、utf8_unicode_ciを指定しています。
ここで、上記のように他の条件での絞り込みが必要となり、複合インデックスを使用するようにしたところ、インデックス設定前後で検索結果が異なることがわかりました。
矢継ぎ早にお願いしてしまい恐縮ですが、こちらも再現されましたら、ご対応頂けますと幸いです。
それでは、以上よろしくお願い致します。
田辺公平