morit****@razil*****
morit****@razil*****
2007年 2月 12日 (月) 09:40:35 JST
Sennaに興味を持ってくださりありがとうございます! Mergeテーブルでは show index で正しい情報を出力するところまで 作り込んでいなかったりします。 insert, select 等のDMLは問題なく使えるのではないかと思います。 以下、senna rev298 + mysql-4.0.27 での実行例です。 mysql> CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, body text); Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, body text); Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE total (a INT NOT NULL AUTO_INCREMENT, body text, KEY(a)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST; Query OK, 0 rows affected (0.05 sec) mysql> CREATE FULLTEXT INDEX xxxx USING SENNA,NGRAM ON total (body); Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> CREATE FULLTEXT INDEX xxxx_index USING SENNA,NGRAM ON t1(body); Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> CREATE FULLTEXT INDEX xxxx_index USING SENNA,NGRAM ON t2(body); Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> INSERT INTO t1 (body) VALUES ("Testing"),("table"),("t1"); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> INSERT INTO t2 (body) VALUES ("Testing"),("table"),("t2"); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM total where match(body) against('table' IN BOOLEAN MODE); +---+-------+ | a | body | +---+-------+ | 2 | table | | 2 | table | +---+-------+ 2 rows in set (0.01 sec) >>> Tatsuya Uemura さんは書きました: > お世話になります。 > りゅうと申します。 > > 今回検索エンジンからの乗換えで検証させていただいております。 > > Mysqlの4.0.27ではMergeテーブルがサポートされているようですが、 > 以下の > 現象に悩まされております。 > > ■Mergeテーブル > CREATE FULLTEXT INDEX xxxx USING SENNA,NGRAM ON wwww (body); > > mysql> show index from xxxx; > +-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ > | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | > +-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ > | xxxx | 1 | xxxx_index | 1 | body | A | 46 | NULL | NULL | | | | > +-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ > 1 row in set (0.00 sec) > > ■子テーブル > CREATE FULLTEXT INDEX xxxx_index USING SENNA,NGRAM ON yyyyy(body); > > mysql> show index from s00000004038_20070209; > +-----------------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+--------------------------------+---------+ > | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | > +-----------------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+--------------------------------+---------+ > | s00000004038_20070209 | 1 | s00000004038_index | 1 | description | A | 1 | NULL | NULL | | FULLTEXT,SENNA,NORMALIZE,NGRAM | | > +-----------------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+--------------------------------+---------+ > 1 row in set (0.00 sec) > > Mergeテーブルは、Sennaのインデックスは使用できないのでしょうか? > > よろしくお願い致します。 > > > _______________________________________________ > Senna-dev mailing list > Senna****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > -- morita