[groonga-dev,02969] mroongaトークナイザーの件

Back to archive index

西山 昇 nishi****@webre*****
2014年 11月 22日 (土) 22:51:05 JST


須藤様

いつも大変お世話になっております。

下記の件、mysql55-mroonga4.07が、centos5.8、,mysql55 5.5.40に
正しくインストールできました。

そこで全文検索のテストを行っていますが、
トークナイザーがTokenBigramで、
東京都の検索で京都も検出したいのですが、
それがうまくできないのですが、
下記で何か問題はあるでしょうか?

mroonga_default_parserは、
TokenBigramSplitSymbolAlphaDigit
と
TokenBigramで試してみましたが、

東京都のみの検出になります;



mysql> show variables like 'mroonga%';
+----------------------------------------+----------------------------------+
| Variable_name                          | Value                            |
+----------------------------------------+----------------------------------+
| mroonga_action_on_fulltext_query_error | ERROR_AND_LOG                    |
| mroonga_database_path_prefix           |                                  |
| mroonga_default_parser                 | TokenBigramSplitSymbolAlphaDigit |
| mroonga_default_wrapper_engine         |                                  |
| mroonga_dry_write                      | OFF                              |
| mroonga_enable_optimization            | ON                               |
| mroonga_libgroonga_support_lz4         | OFF                              |
| mroonga_libgroonga_support_zlib        | ON                               |
| mroonga_libgroonga_version             | 4.0.7                            |
| mroonga_lock_timeout                   | 10000000                         |
| mroonga_log_file                       | groonga.log                      |
| mroonga_log_level                      | NOTICE                           |
| mroonga_match_escalation_threshold     | 0                                |
| mroonga_vector_column_delimiter        |                                  |
| mroonga_version                        | 4.07                             |
+----------------------------------------+----------------------------------+
15 rows in set (0.00 sec)


mysql> show variables like 'mroonga%';
+----------------------------------------+---------------+
| Variable_name                          | Value         |
+----------------------------------------+---------------+
| mroonga_action_on_fulltext_query_error | ERROR_AND_LOG |
| mroonga_database_path_prefix           |               |
| mroonga_default_parser                 | TokenBigram   |
| mroonga_default_wrapper_engine         |               |
| mroonga_dry_write                      | OFF           |
| mroonga_enable_optimization            | ON            |
| mroonga_libgroonga_support_lz4         | OFF           |
| mroonga_libgroonga_support_zlib        | ON            |
| mroonga_libgroonga_version             | 4.0.7         |
| mroonga_lock_timeout                   | 10000000      |
| mroonga_log_file                       | groonga.log   |
| mroonga_log_level                      | NOTICE        |
| mroonga_match_escalation_threshold     | 0             |
| mroonga_vector_column_delimiter        |               |
| mroonga_version                        | 4.07          |
+----------------------------------------+---------------+
15 rows in set (0.00 sec)


mysql> CREATE TABLE diaries (
    ->   id int primary key auto_increment,
    ->   content varchar(255),
    ->   fulltext index(content)
    -> ) engine = mroonga default charset = utf8;


mysql> INSERT INTO diaries (content) VALUES ("明日の東京都の天気は晴れでしょう");
Query OK, 1 row affected (0.02 sec)

mysql> INSERT INTO diaries (content) VALUES ("明日の京都の天気は雨でしょう");
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM diaries WHERE MATCH(content) AGAINST('東京都');
+----+--------------------------------------------------+
| id | content                                          |
+----+--------------------------------------------------+
|  1 | 明日の東京都の天気は晴れでしょう                 |
+----+--------------------------------------------------+


mysql> select * from diaries;
+----+--------------------------------------------------+
| id | content                                          |
+----+--------------------------------------------------+
|  1 | 明日の東京都の天気は晴れでしょう                 |
|  2 | 明日の京都の天気は雨でしょう                     |
+----+--------------------------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM diaries WHERE MATCH(content) AGAINST('京都');
+----+--------------------------------------------------+
| id | content                                          |
+----+--------------------------------------------------+
|  1 | 明日の東京都の天気は晴れでしょう |
|  2 | 明日の京都の天気は雨でしょう       |
+----+--------------------------------------------------+
2 rows in set (0.00 sec)

→ 京都で検索すると、東京都も検出されますが、
東京都で検索すると、京都は検索されません、、

my.cnf内の
ft_min_word_len = 1
に設定しています、、

お手数ですが、アドバイス頂ければ
大変ありがたくぞんじます。
よろしくお願いします。




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