[groonga-dev,00963] Re: mroongaの検索結果について

Back to archive index

Kouhei Sutou kou****@clear*****
2012年 6月 28日 (木) 22:23:23 JST


須藤です。

In <CAEQj****@mail*****>
  "[groonga-dev,00959] mroongaの検索結果について" on Thu, 28 Jun 2012 14:15:33 +0900,
  中谷宗嵩 <nakatani_munet****@flyin*****> wrote:

> 【現在の検索結果と問題点】
> 
> (1)"晴れ"で検索
> 
> mysql> select * from diaries WHERE match (content) against("晴れ
> "in boolean mode);
...
> ⇒問題:"日本晴れ"が取得出来ない。

character setを確認してもらえますか?
↓でcharcter_set_clientとかがutf8になっていないとうまく検索
できないはずです。(UTF-8で登録・検索しているつもりでも他の
エンコーディングとして文字列を扱っているとうまく検索できな
い。)

  mysql> SHOW VARIABLES LIKE 'character_set_%';
  +--------------------------+----------------------------+
  | Variable_name            | Value                      |
  +--------------------------+----------------------------+
  | character_set_client     | utf8                       |
  | character_set_connection | utf8                       |
  | character_set_database   | latin1                     |
  | character_set_filesystem | binary                     |
  | character_set_results    | utf8                       |
  | character_set_server     | latin1                     |
  | character_set_system     | utf8                       |
  | character_sets_dir       | /usr/share/mysql/charsets/ |
  +--------------------------+----------------------------+
  8 rows in set (0.00 sec)

とりあえず、以下のようにするとそれっぽくなると思います。

  mysql> SET NAMES utf8;

もし、character setがちゃんと設定されていなかったら↑を実行し
てから「データの登録」と「検索」をやり直してもらえますか?

すでに登録されているデータが期待したcharacter setで登録されて
いるかどうかはmysqldumpの結果を見るとわかる気がします。UTF-8
で登録されていればmysqldumpの結果もUTF-8になっているはずです。

検索時にちゃんとしたcharacter setが使われているかどうかは
mroongaのログレベルを上げれば確認できます。

↓でログレベルを上げて、match againstしてみてください。

  mysql> SET GLOBAL mroonga_log_level = "debug";

MYSQL_DATA_DIR/groonga.logに以下のようなログがでるはずです。
この「晴れ」の部分がgroongaに渡っているデータです。ここが
UTF-8ならUTF-8で渡ってきているということです。

  2012-06-28 09:12:58.790100|i|10683700|grn_ii_sel > (晴れ)
  2012-06-28 09:12:58.790191|i|10683700|n=1 (晴れ)
  2012-06-28 09:12:58.790237|i|10683700|exact: 5
  2012-06-28 09:12:58.790253|i|10683700|hits=5
  2012-06-28 09:12:58.790281| |10683700|0x7fa80030e130|:1340889178790280435 filter(5)

> (2)"日本"で検索

こちらも同じ原因じゃないかと思います。


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

groongaサポート:
  http://groonga.org/ja/support/
プログラミングが好きなソフトウェア開発者を募集中:
  http://www.clear-code.com/recruitment/




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