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

Back to archive index

中谷宗嵩 nakatani_munet****@flyin*****
2012年 6月 28日 (木) 14:15:33 JST


はじめまして。

株式会社フライングラインの中谷と申します。


社内サービスにmroongaを導入しようとテストしているのですが、

意図した検索結果が得られないため、質問させていただきます。



【環境】

・CentOS6.2

・MySQL5.1.61

・mroonga2.0.3 (以下の手順に従い、yumでインストール)

http://mroonga.github.com/ja/docs/install.html#centos-6



【テーブル構造とデータ】

mysql> show create table diaries;

--------------------------

CREATE TABLE `diaries` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `content` varchar(255) DEFAULT NULL,

  PRIMARY KEY (`id`),

  FULLTEXT KEY `content` (`content`)

) ENGINE=mroonga DEFAULT CHARSET=utf8

--------------------------


mysql> select * from diaries;

+----+--------------------------------------------------------------+

| id | content                                                      |

+----+--------------------------------------------------------------+

|  1 | 明日の天気は晴れでしょう。                      |

|  2 | 明日の天気は雨でしょう。                         |

|  3 | 今日は晴れました。明日も晴れるでしょう。 |

|  4 | 今日は晴れましたが、明日は雨でしょう。    |

|  6 | 日本                                                       |

|  7 | 日本人                                                    |

|  8 | 日本晴れ                                                 |

|  9 | 日本は晴れ                                              |

+----+--------------------------------------------------------------+

8 rows in set (0.00 sec)



【現在の検索結果と問題点】

(1)"晴れ"で検索

mysql> select * from diaries WHERE match (content) against("晴れ
"in boolean mode);

+----+--------------------------------------------------------------+

| id | content                                                      |

+----+--------------------------------------------------------------+

|  1 | 明日の天気は晴れでしょう。                      |

|  3 | 今日は晴れました。明日も晴れるでしょう。 |

|  4 | 今日は晴れましたが、明日は雨でしょう。    |

|  9 | 日本は晴れ                                              |

+----+--------------------------------------------------------------+

⇒問題:"日本晴れ"が取得出来ない。


(2)"日本"で検索

mysql> select * from diaries WHERE match (content) against("日本
"in boolean mode);

+----+-----------------+

| id | content         |

+----+-----------------+

|  6 | 日本          |

|  9 | 日本は晴れ |

+----+-----------------+

⇒問題:"日本人"、"日本晴れ"が取得出来ない。



【質問】

"晴れ"で検索した際に"日本晴れ"も、"日本"で検索した際に"日本人"、"日本晴れ"も

取得するにはどうすれば良いでしょうか?

パーサは"TokenBigram"と"TokenMecab"を試してみましたが、どちらも結果は同じでした。

初心者で恐縮ですが、ご教示いただけますと幸いです。



よろしくお願い致します。

-- 
-----------------------------------------
株式会社 フライングライン
中谷 宗嵩

東京都中央区銀座8-11-11 TK銀座8丁目ビル
URL: http://www.flyingline.co.jp/
Tel: 03-5537-0390 Fax: 03-5537-0391
Mail: nakatani_munet****@flyin*****



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