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

Back to archive index

mayuf****@sc4***** mayuf****@sc4*****
2007年 4月 12日 (木) 23:25:34 JST


池田様

お世話になっております。まゆです。
アドバイス、ありがとうございます。

池田様のアドバイスに従ってsenna_lexicon_sizeの状態を見ると、
0より大きな値だったので別の原因であるということがわかりました。
また、島村様のアドバイスにあったインデックス作成を調べてみると、
インデックスを作成するという作業を行わなければならないことに気づき、
インデックスを追加しました。
その後、データをUTF-8にしてテキストからSQLへ送ると、きちんと動作
いたしました!!

ご指摘いただいた部分は自分にとって初めてのことだったのでまったく
気づけませんでした。また一歩、前進できてとても嬉しいです。

ここまでできたのもアドバイスをいただけたおかげです。
本当にありがとうございます。

まだ、動作確認がしっかりできていないので、今後またお世話になることがあると
思いますが、どうぞよろしくお願いいたします。


まゆ

> -----Original Message-----
> From: Tetsuro IKEDA
> Sent: Thu, Apr 12 2007 09:36:37 JST
> To: sennaの開発に関する日本語での議論
> Subject: [Senna-dev 562] Re: senna+Mysql+PHPについて
> 
> こんにちは。池田@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 mailing list
> Senna****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev




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