[Senna-dev 364] Re: “桃”と“桜”とで同じ検索結果になる

Back to archive index

Tasuku SUENAGA a****@razil*****
2006年 10月 16日 (月) 22:57:32 JST


末永です。

同様のケースでは、
以下のような問題が発生していました。

●MeCabの辞書がutf-8でない
確認方法:
 コマンドラインでMeCabを起動し、
 何かutf-8文字列を入力し、
 返ってくる文字列がutf-8であることを確認する
●/var/senna/senna.confにDEFAULT_ENCODING utf8が書かれていない
確認方法:
 cat /var/senna/senna.conf
●mysqlライブラリの設定で、自動文字コード変換が働いてしまい、
  mysqlサーバに保存されている文字列がutf-8になっていない
確認方法(1):
 MySQLのデータファイルである「テーブル名.MYD」ファイルに対して
 headで表示し、utf-8っぽい文字列が入っていることを確認する
確認方法(2):
 sennaのtest/itest -vを用いて、
 Sennaのインデックスに登録されている単語一覧を表示させ、
 utf-8で単語が登録されていることを確認する

1番目と2番目の問題は簡単にチェックできますが、
3番目の問題はやっかいです。
MySQLへの格納時も、検索時も文字コード変換がかかるため、
アプリケーション側から見ると、
あたかもMySQL側でutf-8の文字列を保持しているように見えるからです。

3番目の問題であれば、
http://www.scs.co.jp/mysql/
にある
「MySQL日本語処理完全解説」というファイルが解決の参考になると思います。

以上、参考になれば幸いです。

MITSUGI kiyoshi wrote:
> はじめまして、三ツ木と申します。
> 
> Mac OS X 10.4.8、MySQL5.1.11-beta、mecab-0.93、 
> senna-0.8.1、
> utf8でテスト中です。基本的な使い方が全くわかっていないせい
> なのかもしれませんが、例えば“桃”で検索した結果と“桜”で
> 検索した結果とが同じになります。これは何かオプションをつけ
> て検索すべきなのでしょうか。SQL文は、
> 
> SELECT DISTINCT CONCAT(h.hoge_belong, h.hoge_cd) AS hoge_cd
> FROM hoge AS h
> WHERE 1
> AND MATCH(h.hoge_name, h.hoge_catch_copy, h.hoge_point) AGAINST  
> ('桃');
> 
> という感じです。また、“タラコ”でタラが引っかかったりするなど、
> ちょっと挙動を掴みあぐねています。“タラ”が引っかかるのも、全
> ての“タラ”ではなく、1つのみ引っかかってきました。“たら 
> こ”だと
> かなり“たら”が引っかかります。
> 
> よろしくお願いします。
> 
> 
> ----------------------------
> MITSUGI, kiyoshi
> kiyos****@mitsu*****
> http://www.mitsugi.jp/
> ----------------------------




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