[groonga-dev,02973] Re: mroongaトークナイザーの件

Back to archive index

Kouhei Sutou kou****@clear*****
2014年 11月 25日 (火) 14:13:15 JST


須藤です。

In <54709****@webre*****>
  "[groonga-dev,02969] mroongaトークナイザーの件" on Sat, 22 Nov 2014 22:51:05 +0900,
  西山 昇 <nishi****@webre*****> wrote:

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

よかったです!

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

クエリーの一部のトークンでもヒットさせたい、ということですね。
ちょっと裏ワザっぽくなってしまうのですが、これでヒットさせる
ことができます。

SELECT * FROM diaries WHERE MATCH(content) AGAINST('*S-1 "東京都"' IN BOOLEAN MODE);

「'*S-1 "東京都"' IN BOOLEAN MODE」という条件は
「東京都」に類似している文書を検索する、という条件なんですが、
「類似度の閾値」というパラメーター(「*S」の後の「-1」の部分)
があって、そこに「-1」(負の値)を指定することで、「東京都」
の各トークンのどれかにマッチすればヒット、というように動きま
す。

TokenBigramを使うと「東京都」は「東京」と「京都」という2つの
トークンになるので、「東京」でも「京都」でもヒットするように
なります。

ただ、「類似度の閾値」に負の値を指定するとマッチしすぎる(ノ
イズが多くなる)可能性が高くなるので注意して使ってください。

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

実は、Mroongaはft_*というパラメーターは見ないので、これは
Mroongaでは効かないのです。


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
名著『リーダブルコード』を解説者と一緒に読み解こう:
  http://schoo.jp/class/1502




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