磯部 和広
k-iso****@rozet*****
2012年 5月 14日 (月) 13:06:52 JST
いつもお世話になっております。 CentOS5.7のmroonga2.02では出来た、 トークナイザーのテーブル作成時の指定が CentOS6.2では、下記のように出来ませんでした。 環境は下記です。 [k-isobe @ PMJ-MySQL1 ~]$ cat /etc/redhat-release CentOS release 6.2 (Final) [k-isobe @ PMJ-MySQL1 ~]$ rpm -qa | grep -i mysql perl-DBD-MySQL-4.013-3.el6.x86_64 mysql-server-5.1.61-1.el6_2.1.x86_64 mysql-libs-5.1.61-1.el6_2.1.x86_64 mysql-5.1.61-1.el6_2.1.x86_64 mysql-mroonga-2.02-0.el6.x86_64 [k-isobe @ PMJ-MySQL1 ~]$ トークナイザーを指定しなければ、テーブルが作成できます。 [k-isobe @ PMJ-MySQL1 ~]$ mysql -u root test <中略> mysql> CREATE TABLE `test_data` ( -> `english` text NOT NULL, -> `japanese` text NOT NULL, -> `japanese_splitted` text NOT NULL, -> FULLTEXT KEY `english` (`english`) COMMENT 'parser "TokenDelimit"', -> FULLTEXT KEY `japanese_splitted` (`japanese_splitted`) COMMENT 'parser '> "TokenDelimit"' -> ) ENGINE=mroonga DEFAULT CHARSET=utf8; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COMMENT 'parser "TokenDelimit"', FULLTEXT KEY `japanese_splitted` (`japanese_spl' at line 5 mysql> CREATE TABLE `test_data` ( `english` text NOT NULL, `japanese` text NOT NULL, `japanese_splitted` text NOT NULL, FULLTEXT KEY `english` (`english`) , FULLTEXT KEY `japanese_splitted` (`japanese_splitted`) ) ENGINE=mroonga DEFAULT CHARSET=utf8; Query OK, 0 rows affected, 2 warnings (0.48 sec) mysql> exit Bye [k-isobe @ PMJ-MySQL1 ~]$ 同じCreateTable文で、CentOS5.7では作成できます。 ※このcreate文は、mysqldumpで吐かせたものなので当たり前ですが・・・ [k-isobe @ PMJ-MySQL1 ~]$ mysql -u root test -h PMJ-DB1 <中略> mysql> CREATE TABLE `test_data` ( -> `english` text NOT NULL, -> `japanese` text NOT NULL, -> `japanese_splitted` text NOT NULL, -> FULLTEXT KEY `english` (`english`) COMMENT 'parser "TokenDelimit"', -> FULLTEXT KEY `japanese_splitted` (`japanese_splitted`) COMMENT 'parser '> "TokenDelimit"' -> ) ENGINE=mroonga DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.02 sec) mysql> exit Bye [k-isobe @ PMJ-MySQL1 ~]$ 尚、下記のように、my.confでトークナイザーを指定することは出来るようです。 [k-isobe @ PMJ-MySQL1 ~]$ grep mroonga_default_parser /etc/my.cnf mroonga_default_parser=TokenDelimit [k-isobe @ PMJ-MySQL1 ~]$ [k-isobe @ PMJ-MySQL1 ~]$ echo "truncate table test_data;INSERT INTO test_data VALUES ('inflammable liquid','引 火性液体','引火性 液体'), ('infla mmable liquid','ダミー','ダミー');select 'infla', count(1) from test_data where match(english) against('infla');" | mysql -u root test -N infla 1 [k-isobe @ PMJ-MySQL1 ~]$