[groonga-dev,03220] Re: 「TokenBigramIgnoreBlankSplitSymbolAlphaDigit」設定に関して

Back to archive index

Kouhei Sutou kou****@clear*****
2015年 5月 13日 (水) 22:20:00 JST


須藤です。

In <CAGOe04KJ-G03MvH+Jo+6kudXt+HO-GEAO_qcMf-__0414r****@mail*****>
  "[groonga-dev,03215] 「TokenBigramIgnoreBlankSplitSymbolAlphaDigit」設定に関して" on Wed, 13 May 2015 15:09:47 +0900,
  三井しょうた <01035****@gmail*****> wrote:

> parserとして、表題の
> 「TokenBigramIgnoreBlankSplitSymbolAlphaDigit」設定に関してですが、
> 
> ・空白を無視して処理する。
> ・「090 0123 4567」に「9001」でマッチする。
> 
> と言う例がよく紹介されています。
> 
> 今回データの例として、
> 「ゴルフ△青森』 ※△は全角スペース
> に対して、下記何れのキーワードでも検索結果が応答されるようにしたいと考
> えています。
> 1.「ゴルフ青森」※全角スペースなし
> 2.「ごるふ青森」※全角スペースなし
> 3.「ゴルフ」
> 4.「ごるふ」
> 
> かな、カナを無視したいので、
> normalizerに、
> 「NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark」
> を設定したところ、3、4ではヒットしますが、1、2ではヒットしませんで
> した。
> ※空白が無視されない
> 
> 参考までに「NormalizerAuto」を利用すると、1、3でヒットしますが、2、
> 4ではヒットしませんでした。
> ※空白は無視されるが、かな、カナは同一視できない
> 
> どういった設定をすれば良いかわからず、設定について何とかご教授いただき
> たいと
> 考えております。

すみません、groonga-normalizer-mysql(NormalizerMySQLファミ
リー)のバグでした。

正規化した後の文字が半角スペースかどうかをチェックするべきと
ころを、正規化前の文字が半角スペースかどうかをチェックしてい
ました。。。

この変更で互換性がなくなってしまうのですが、これまでの挙動が
バグだったので変更することにします。

メモ:次回リリース時にはインデックスを作りなおさないといけな
いことを明記すること。Mroonga側で自動検出してインデックスを
作り直せるならその仕組みを入れること。

要検討:NormalizerAutoとかは0x20以下のASCII文字(表示できな
いやつら)も空白文字扱いにしているけど
groonga-normalizer-mysqlもそうするべき?そうした方が便利な気
がするけどMySQLとの互換じゃなくなる(MySQLだと'\t' = ' 'じゃ
ないよね?)ので微妙な気はする。


なので、回答は修正版のgroonga-normalizer-mysqlにアップグレー
ドして「NormalizerMySQL...」と「TokenBigramIgnoreBlank...」
を使ってください。ただし、アップグレード後に

  ALTER TABLE テーブル名 DISABLE KEYS;
  ALTER TABLE テーブル名 ENABLE KEYS;

としてインデックスを作り直す必要があります。


たぶん、次回リリースまで待てないと思うので、この問題の修正を
含んだRPMを作りました。次回リリースまではこれでしのいでくだ
さい。

  * 32bit版: http://packages.groonga.org/tmp/groonga-normalizer-mysql-devel-1.1.0-1.el6.i686.rpm
  * 64bit版: http://packages.groonga.org/tmp/groonga-normalizer-mysql-devel-1.1.0-1.el6.x86_64.rpm

rpmコマンドでインストールした後にMySQLを再起動すると
groonga-normalizer-mysqlのアップグレードは完了です。その後に
インデックスを作りなおしてください。


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

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
プログラミングが好きな学生のための勉強会:
  http://www.seplus.jp/sezemi/




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