[Senna-dev 562] Re: senna+Mysql+PHPについて

Back to archive index

Tetsuro IKEDA te.ik****@jpta*****
2007年 4月 12日 (木) 09:33:23 JST


こんにちは。池田@tritonnプロジェクトです。

MySQLのテーブルおよびmecabと辞書の文字コードはどのようになっていますか?

検索結果が0件になる、という自分の経験からするとこれが原因の可能性が考えられます。

例えばMySQLで以下のようにutf8でテーブルを作成した場合、

CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX ft (c1)) DEFAULT CHARSET utf8;

mecabと辞書は以下のように--with-charsetを使用してビルドしておく必要があります。

./configure --with-charset=utf8

# mecabのデフォルトはeucjpなので、eucjpを使う場合は省略が可能ですが。。。

また、このように文字コード設定が原因で検索結果が0件になってしまうような場合、
SHOW SENNA STATUSのSenna_lexicon_sizeは0になります。

SHOW SENNA STATUSのSenna_lexicon_sizeが0よりも大きな値を示しているにも
関わらず結果が0件という場合には別の原因の可能性が高いです。

[test] > SHOW SENNA STATUS\G
*************************** 1. row ***************************
                  Table: t1
               Key_name: ft
            Column_name: c1
               Encoding: utf8
             Index_type: NGRAM
              Normalize: ON
            Split_alpha: OFF
            Split_digit: OFF
           Split_symbol: OFF
     Initial_n_segments: 512
        Senna_keys_size: 3
   Senna_keys_file_size: 8462336
     Senna_lexicon_size: 43
Senna_lexicon_file_size: 8462336
     Senna_inv_seg_size: 3051520
   Senna_inv_chunk_size: 135168
1 row in set (0.00 sec)

よろしくおねがいいたします。

> お世話になっております。
> まゆと申します。
> 
> このようなことをうかがうのは恥ずかしいので気が引けたのですが、
> どうしようもなくなってしまったので思い切ってうかがうことにしました。
> よろしくお願いいたします。
> 
> mysql-5.0.37+senna-1.0.3+mecab0.95 CentOS4 という環境でPHP4.3.9
> を使って全部検索を試みています。
> 
> PHPの方からsenna組み込みのMySQLにSQL文を発行し、検索結果を表示したいと考えているのですが、
> MySQLにsennaを組み込んだ場合はPHPでは通常のSQL構文で動作するのでしょうか?
> 
> 以下のようなクエリーを発行しましたが、検索結果の件数がが0件となってしまいました。
> 
> $query = "SELECT * FROM table01 WHERE MATCH(body) AGAINST('投票');";
> if(!($rs = mysql_query($query))) {
>  print "接続失敗";
> } else {
>  print "成功";
> }
>  print '照会件数= ' . mysql_num_rows($rs) . '<BR>';
> 
> 
> 照会件数=0件
> 
> クエリの部分を
> $query = "SELECT * FROM table01;";
> このようにすると通常のMysqlの動作は確認できるのですが・・・(当然といえば当然かもしれませんが;)
> 
> 調べていたところ、MySQLにsennaを組み込んだ場合は通常のSQL構文を書くだけで、PHPの方に特別なことは
> する必要がないという書き込みを発見したのですが、どうしても上手くいきません。
> 
> sennaの方のインストールや設定が間違っているのか、それともPHPの方のクエリ等の呼び出しが間違っているのか、
> それとも、そもそもPHPでは動作しないのか、それすらわからず頭を抱えております。
> このような質問をするのは大変恥ずかしいのですが、アドバイスいただけませんでしょうか。
> よろしくお願いいたします。
> 
> _______________________________________________
> Senna-dev mailing list
> Senna****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev

-----------------------------------------
Tetsuro IKEDA, te.ik****@jpta*****
Kachidoki, Tokyo, Jpan
http://www.scs.co.jp/mysql/
-----------------------------------------




Senna-dev メーリングリストの案内
Back to archive index