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