Kouhei Sutou
kou****@clear*****
2014年 1月 29日 (水) 13:47:03 JST
須藤です。 In <CANM+HheBOdS8zC6U5biD5M=VJ4g2****@mail*****> "[groonga-dev,02086] Re: 複数の検索クエリがある場合のスニペットの取得対象について<Groonga>" on Wed, 29 Jan 2014 12:32:25 +0900, Naoya Murakami <visio****@gmail*****> wrote: >> す、すみません。。。説明が間違っていました。。。 >> 「ノーマライズ前は前の文字から相対的に何バイト先にあったか」 >> でした。(これでも説明がわかりにくい気がしますが。。。) >> > > やはりそうですよね。 > デバッグログを適当に埋め込んでNormalizerAutoで入れられるchecksを > 見てたら、そうだろうなぁと思って対応してました。 すみません。。。 > ちなみに、normalizeコマンドでchecksが見れるようになったのですね! > これでchecksのテストも簡単にできていいですね。 はい! > 特に問題というわけではないのですが、NormalizerAutoと > groonga-nomalizer-mysqlの動きを比較していて、少し気になる点が > ありました。 > > groonga-nomalizer-mysqlのノーマライザでは、normalizedの末尾に > NULL文字(\0)が入りません。 > > たとえば、「今日は雨」という文字列をgrn_string_get_normalizedし、 > %sで文字列を出力すると、「今日は雨?」という値が出力されます。 > > 一方、utf8_normalizeでは、normalizedの末尾にNULL文字(\0)が > 入ります。 > > たとえば、「今日は雨」という文字列をgrn_string_get_normalizedし、 > %sで文字列を出力すると、「今日は雨」という値が出力されます。 > > MySQL準拠のノーマライザでは、これは想定通りでよかったですか? はい、想定通りでした。 > lengthがとれるので、トークナイズやスニペット処理には、影響がなく > 特に問題ないかもしれません。 というようにlengthを使うからいらないよねーと思ってつけていま せんでした。 が、1バイトくらい多めにアロケートしても影響はなさそうで、'\0'が 終端にあった方がデバッグするときとか便利なことがあるというの もわかるので、'\0'を入れておきました! -- 須藤 功平 <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