Kouhei Sutou
kou****@clear*****
2014年 2月 5日 (水) 22:40:50 JST
須藤です。 In <CANM+Hhcxkfha-shfYBatXcjfG6WmuUS_rEKvE****@mail*****> "[groonga-dev,02110] Re: NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMarkがノーマライズした記号が意図したとおりトークナイズされない" on Wed, 5 Feb 2014 21:17:48 +0900, Naoya Murakami <visio****@gmail*****> wrote: > このあたり、ちょっと前にノーマライザをさんざんいじったので、原因がわかりました。 > > 以下で、ノーマライズ後のctypeを取得するんですが、ノーマライズ前の文字の長さ > character_lengthを引いているので、元に戻しすぎて、誤った位置のctypeを取得 > しています(symbolであるべきところがdigitに)。 > > https://github.com/groonga/groonga-normalizer-mysql/blob/master/normalizers/mysql.c#L372 > > この前のchecks対応で追加したノーマライズ後の文字の長さnormalized_character_length > で引けば、適正な位置のctypeになり、TokenBigramが期待通りの挙動になることを > 確認できました。 おぉ! たしかにそのとおりでした! ありがとうございます!直しておきました! > 開発者の方ならすぐわかることだと思うのですが、一応ご報告します。 開発者並みのデバッグ力です!さすがです! > (これ、トークナイズ位置が誤っているので、TokenBigramでMroongaをつかっていて、 > utf8の照合順序使っている人には影響が結構ありそうですね。。) ノーマライズ後の文字と元の文字のバイト数が違うときに発生する んですが、NormalizerMySQLUnicodeCIのときも「!」→「!」の変 換があるので問題が発生しますね。。。「?」も同じですね。。。 すみません。。。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) Groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コミットへのコメントサービスはじめました: http://www.clear-code.com/services/commit-comment.html