Katsuya Utada
utada****@themi*****
2007年 2月 1日 (木) 15:01:21 JST
こんにちは、うただです 便乗で質問させて下さい。 2ind patchの説明の中で *MySQLが全文検索用のインデックスと通常のインデックスの両方を併用 できるように2ind-patchパッチが使用できます。 とありますが、同時に併用できるSennaインデックスの数には制限は あるでしょうか。 たとえば下記の例で SELECT * FROM indexer force index(index_indexer_regist) WHERE MATCH(indexer_description) AGAINST('海') and MATCH(indexer_description_org) AGAINST('山') and MATCH(indexer_body) AGAINST('川') ORDER BY indexer_regist; のようなクエリは使えるのかなと思ったのです。 無理だと思ってたのですが当方で試したらできてしまいました。 但しexplainでは一つのfulltext indexしか使われていないよう に見えました(これはexplainの問題かもしれませんが)。 On Wed, 03 Jan 2007 06:22:00 +0900, Tasuku SUENAGA wrote: |末永です。 | |SHOW CREATE TABLEの結果を見ると、 |indexer_registというカラムに対するインデックスの名前は、 |index_indexer_registのようです。 | |よって、 |SELECT * FROM indexer force index(indexer_regist) | WHERE MATCH(indexer_description) AGAINST('海') | ORDER BY `indexer_regist` LIMIT 1,10; |ではなく、 |SELECT * FROM indexer force index(index_indexer_regist) | WHERE MATCH(indexer_description) AGAINST('海') | ORDER BY `indexer_regist` LIMIT 1,10; |というクエリを投げる必要があります。 | |yuji tomita wrote: |> お世話になっております。富田です。 |> |>> 1.PHPからmysql関数およびmysqli関数を使用して該当SQLを発行すると、前述 |> のエラー発生。 |>> 2.Perl/CGIからDBIを通して該当SQLを発行すると、前述のエラー発生。 |>> 3.コマンドラインからmysqlにログインして実行した場合、正常動作。 |>> 4.phpMyAdminで該当SQLを発行した場合、正常動作。 |> |>> クライアントによって挙動が違う場合として、 |>> MySQLにわたってくる文字コードが違う場合が考えられます。 |> 一般ログでは、1と4は全く同じクエリを投げた事になっており、文字化けが |> 確認できませんでした。しかし1の場合は下記エラーをPHPが受け取っています。 |> Can't find FULLTEXT index matching the column list |> |> ------------------------------------------------------------------------ |> ・show create table indexer;の結果 |> | indexer |CREATE TABLE `indexer` ( |> `entry_id` int(11) DEFAULT NULL, |> `indexer_url` varchar(200) NOT NULL, |> `indexer_title` varchar(200) NOT NULL, |> `indexer_description` text NOT NULL, |> `indexer_description_org` text NOT NULL, |> `indexer_body` text NOT NULL, |> `indexer_subject` varchar(400) NOT NULL, |> `indexer_copyright` varchar(400) NOT NULL, |> `indexer_movie_flg` tinyint(1) NOT NULL, |> `indexer_podcast_flg` tinyint(1) NOT NULL, |> `indexer_service` varchar(100) NOT NULL, |> `indexer_author` varchar(400) NOT NULL, |> `indexer_pubdate` varchar(30) NOT NULL, |> `indexer_regist` datetime NOT NULL, |> `indexer_update` datetime NOT NULL, |> `indexer_site_id` int(11) DEFAULT NULL, |> UNIQUE KEY `entry_id` (`entry_id`), |> KEY `index_indexer_url` (`indexer_url`), |> KEY `index_indexer_title` (`indexer_title`), |> KEY `index_indexer_regist` (`indexer_regist`), |> KEY `index_indexer_update` (`indexer_update`), |> FULLTEXT KEY `indexer_description` (`indexer_description`), |> FULLTEXT KEY `indexer_description_org` (`indexer_description_org`), |> FULLTEXT KEY `indexer_body` (`indexer_body`) |> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 | |> ------------------------------------------------------------------------ |> |> ・Sennaのインデックスを張る際のSQL文 |> 上記のcreate文の通りです。 |> |> ------------------------------------------------------------------------ |> ・/var/senna/senna.confの内容 |> DEFAULT_ENCODING utf8 |> |> ------------------------------------------------------------------------ |> ・mecabインストールログ |> 文字コードはutf-8(辞書構築時に指定) |> ------------------------------------------------------------------------ |> |> 恐れ入りますが、よろしくお願いいたします。 |_______________________________________________ |Senna-dev mailing list |Senna****@lists***** |http://lists.sourceforge.jp/mailman/listinfo/senna-dev | | --- Katsuya Utada <utada****@themi*****>