[groonga-dev,02111] Re: NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMarkがノーマライズした記号が意図したとおりトークナイズされない

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




groonga-dev メーリングリストの案内