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*****>