[groonga-dev,02540] 中黒「・」を含む単語の存在する文章の検索について

Back to archive index

FMK devel****@fmk*****
2014年 7月 29日 (火) 16:37:14 JST


はじめまして。中村と申します。

こちらのメーリングリストで扱う内容としてふさわしくなかったらご容赦ください。

現在、mroonga 4.01を、ラッパーモードにてMySQL5.6の環境で使用しています。
そして、日本語全文検索用テーブルの作成において
トークナイザーとして「TokenMecab」を、
ノーマライザーとして「NormalizerAuto」を選択しています。
テーブルの文字コードは「utf8mb4」です。


そこで質問なのですが、
中黒「・」を含む単語、例えば「アル・カポネ」などの人名
を含む文章を全文検索したい場合、文章の文脈次第で「アル・カポネ」という
キーワードでは思うような検索ができないことがあるかと考えます。

これはおそらく、MeCab未知語「アル・カポネ」が、
中黒「・」の存在により、以下のように1つの語が複数の品詞に分解されるためだと
思われます。

例)
$ echo 'アル・カポネ' | mecab --unk-feature "未知語"
アル    名詞,固有名詞,人名,名,*,*,アル,アル,アル
・      記号,一般,*,*,*,*,・,・,・
カポネ  未知語
EOS


この場合、1つの解法として全文検索用のテーブルを別個用意し、
「アル・カポネ」から中黒「・」を除去した「アルカポネ」を格納し、
検索時も同様に「・」を除去して「アルカポネ」で検索することにより、
表記のゆらぎに関係なくヒットするようになるかと存じます。

例)
$ echo 'アルカポネ' | mecab --unk-feature "未知語"
アルカポネ      未知語
EOS


ただ、上記のような機械的な「・」除去はいまひとつスマートではない印象がある
上、
別の部分でどのような副作用が出るのか未知なところがあり、
自信が持てないでおります。

仮にノーマライザーを別のものに変更するなど
他に良い一般的なノウハウがあればご教示頂ければ幸いです。

よろしくお願いします。

中村




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