中谷宗嵩
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*****