[Tritonn-dev 132] "word*"という検索式の意味

Back to archive index

Kazuhiko kazuh****@fdiar*****
2009年 9月 3日 (木) 20:01:07 JST


こんにちは、かずひこです。

Tritonnというか、Sennaの検索式の質問な気もしますが、"word*"という検索式
の意味が"word"とどう異なるのか分かりません。
* senna-1.1.4
* tritonn-1.0.12-mysql-5.0.67

"*"が付いている、付いていないに関わらず、exactマッチがあればそれだけ返し
て、exactマッチが無ければ、部分一致を試しているように見えます。

しかし、
| ** 単語*
| ある単語から始まる文字列を検索する、という条件を表す。
というQUERY.JAの記述からは、"word*"の場合は、exactマッチがあろうがなかろ
うが部分一致もしてくれそうに感じます。

以下は、"garra"という語と"garrahan"という語が含まれるテーブルに対する検
索の例で、MySQLのクエリとsennaのログを載せておきます。

・"garra"で検索 (exact=1)
mysql> select uid from full_text where MATCH
(`full_text`.`SearchableText`) AGAINST ('garra' in boolean mode) limit 1000;
1 row in set (0.00 sec)

|i|3| ft_init_boolean_search => sen_query_open: str='garra', str_len=5,
max_exprs=32
|d|3| ft_init_boolean_search => sen_query_rest: q=0x24b25e0, rest=0x440c80e8
|d|3| ft_init_boolean_search => sen_records_open
|i|3| ft_init_boolean_search => sen_query_exec: i=0x2489d40,
q=0x24b25e0, r=0x24b1e50
|i|3| n=1 (garra)
|i|3| hits(exact)=1
|d|3| ft_init_boolean_search => sen_query_close: q=0x24b25e0
|d|3| ft_boolean_reinit_search => sen_records_rewind: records=0x24b1e50
|d|3| ft_boolean_close_search => sen_records_close: records=0x24b1e50

・"garra*"で検索 (exact=1)
mysql> select uid from full_text where MATCH
(`full_text`.`SearchableText`) AGAINST ('garra*' in boolean mode) limit
1000;
1 row in set (0.00 sec)

|i|3| ft_init_boolean_search => sen_query_open: str='garra*', str_len=6,
max_exprs=32
|d|3| ft_init_boolean_search => sen_query_rest: q=0x24b25e0, rest=0x440c80e8
|d|3| ft_init_boolean_search => sen_records_open
|i|3| ft_init_boolean_search => sen_query_exec: i=0x2489d40,
q=0x24b25e0, r=0x24b1e50
|i|3| n=1 (garra*)
|i|3| hits(exact)=1
|d|3| ft_init_boolean_search => sen_query_close: q=0x24b25e0
|d|3| ft_boolean_reinit_search => sen_records_rewind: records=0x24b1e50
|d|3| ft_boolean_close_search => sen_records_close: records=0x24b1e50

・"garrah"で検索 (exact=0)
mysql> select uid from full_text where MATCH
(`full_text`.`SearchableText`) AGAINST ('garrah' in boolean mode) limit
1000;
40 rows in set (0.00 sec)

|i|3| ft_init_boolean_search => sen_query_open: str='garrah', str_len=6,
max_exprs=32
|d|3| ft_init_boolean_search => sen_query_rest: q=0x24b25e0, rest=0x440c80e8
|d|3| ft_init_boolean_search => sen_records_open
|i|3| ft_init_boolean_search => sen_query_exec: i=0x2489d40,
q=0x24b25e0, r=0x24b1e50
|i|3| hits(exact)=0
|i|3| n=1 (garrah)
|i|3| hits(unsplit)=40
|d|3| ft_init_boolean_search => sen_query_close: q=0x24b25e0
|d|3| ft_boolean_reinit_search => sen_records_rewind: records=0x24b1e50
|d|3| ft_boolean_close_search => sen_records_close: records=0x24b1e50

・"garrah*"で検索 (exact=0)
mysql> select uid from full_text where MATCH
(`full_text`.`SearchableText`) AGAINST ('garrah*' in boolean mode) limit
1000;
40 rows in set (0.00 sec)

|i|3| ft_init_boolean_search => sen_query_open: str='garrah*',
str_len=7, max_exprs=32
|d|3| ft_init_boolean_search => sen_query_rest: q=0x24b25e0, rest=0x440c80e8
|d|3| ft_init_boolean_search => sen_records_open
|i|3| ft_init_boolean_search => sen_query_exec: i=0x2489d40,
q=0x24b25e0, r=0x24b1e50
|i|3| hits(exact)=0
|i|3| n=1 (garrah*)
|i|3| hits(unsplit)=40
|d|3| ft_init_boolean_search => sen_query_close: q=0x24b25e0
|d|3| ft_boolean_reinit_search => sen_records_rewind: records=0x24b1e50
|d|3| ft_boolean_close_search => sen_records_close: records=0x24b1e50

どうぞよろしくお願いします。
かずひこ




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