Satoshi Mitani
samit****@yahoo*****
2014年 9月 1日 (月) 13:22:10 JST
はじめまして。ヤフー(株) 三谷と申します。 Mronnga を検証しておりまして、ドキュメントに記載されている内容と異なる挙動がありました。 http://mroonga.org/ja/docs/reference/full_text_search/scoring.html に記載されている、「4.重みが大きい上位N個のトークンを取り出す」のステップで、「明日」だけが残るという認識なのですが、 実際は、「天気」も対象になっているようです。 バグでしょうか?アドバイスいただけると助かります。 mysql> select * from groonga_test2; +----+-----------------------------------+ | id | keywords | +----+-----------------------------------+ | 1 | 明日は明日の風が吹く。 | | 2 | また明日ね | | 11 | ひどい天気. | | 12 | 快晴の天気 | | 13 | のどかな天気 | | 14 | 蒸し暑い天気 | | 15 | 天気が穏かになる | | 16 | 明日の天気が心配です。 | +----+-----------------------------------+ 8 rows in set (0.00 sec) mysql> select keywords, match(keywords) against ('明日の天気') from groonga_test2 WHERE match(keywords) against ('明日の天気') ; +-----------------------------------+---------------------------------------------+ | keywords | match(keywords) against ('明日の天気') | +-----------------------------------+---------------------------------------------+ | ひどい天気. | 116509 | | 快晴の天気 | 116509 | | のどかな天気 | 116509 | | 蒸し暑い天気 | 116509 | | 天気が穏かになる | 116509 | | 明日の天気が心配です。 | 116509 | +-----------------------------------+---------------------------------------------+ 6 rows in set (0.00 sec) mysql> SELECT COUNT(*) FROM groonga_test2 WHERE keywords like '%明日%'; +----------+ | COUNT(*) | +----------+ | 3 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM groonga_test2 WHERE keywords like '%天気%'; +----------+ | COUNT(*) | +----------+ | 6 | +----------+ 1 row in set (0.00 sec) mysql> SELECT mroonga_command("select groonga_test2-keywords --query '_key:天気 OR _key:明日' --output_columns") AS groonga_response; +----------------------------------------------------------------------------------------------------------+ | groonga_response | +----------------------------------------------------------------------------------------------------------+ | [[[2],[["_id","UInt32"],["_key","ShortText"],["index","groonga_test2"]],[11,"天気",9],[1,"明日",5]]] | +----------------------------------------------------------------------------------------------------------+ 1 row in set (0.01 sec) mysql> show create table groonga_test2 \G *************************** 1. row *************************** Table: groonga_test2 Create Table: CREATE TABLE `groonga_test2` ( `id` int(11) NOT NULL DEFAULT '0', `keywords` varchar(64) DEFAULT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `keywords` (`keywords`) ) ENGINE=mroonga DEFAULT CHARSET=utf8 COMMENT='engine "innodb"' 1 row in set (0.00 sec) mysql> show global variables like '%mroonga%'; +----------------------------------------+---------------+ | Variable_name | Value | +----------------------------------------+---------------+ | mroonga_action_on_fulltext_query_error | ERROR_AND_LOG | | mroonga_database_path_prefix | | | mroonga_default_parser | TokenMecab | | mroonga_default_wrapper_engine | | | mroonga_dry_write | OFF | | mroonga_enable_optimization | ON | | mroonga_libgroonga_version | 4.0.2 | | mroonga_lock_timeout | 10000000 | | mroonga_log_file | groonga.log | | mroonga_log_level | NOTICE | | mroonga_match_escalation_threshold | 0 | | mroonga_version | 4.03 | +----------------------------------------+---------------+ 12 rows in set (0.00 sec) よろしくお願いします。 ----- Satoshi MITANI MAIL:samit****@yahoo***** Y!ID:samitani1207 Yahoo! Japan technical team.