[groonga-dev,02086] Re: 複数の検索クエリがある場合のスニペットの取得対象について<Groonga>

Back to archive index

Naoya Murakami visio****@gmail*****
2014年 1月 29日 (水) 12:32:25 JST


お世話になっております。村上です。


>>> あぁ、groonga-normalizer-mysqlに入っているノーマライザーは部
> >>> 分的にしかノーマライザーの機能を実装していないからかもしれま
> >>> せん。ノーマライズ前は何バイト目にあった文字か、という情報を
> >>> 入れれば動きそうな気が。。。
> >>> (空白を削除するとか、いわゆる全角文字を半角文字に正規化した
> >>> りすると何バイト目かというのがずれるので、それを補正するため
> >>> の情報です。)
> >>>
> >>
> >> ご説明ありがとうございます!
> >> おかげでgrn_stringのchecksが何者か把握することができました。
>
> す、すみません。。。説明が間違っていました。。。
> 「ノーマライズ前は前の文字から相対的に何バイト先にあったか」
> でした。(これでも説明がわかりにくい気がしますが。。。)
>

やはりそうですよね。
デバッグログを適当に埋め込んでNormalizerAutoで入れられるchecksを
見てたら、そうだろうなぁと思って対応してました。

ちなみに、normalizeコマンドでchecksが見れるようになったのですね!
これでchecksのテストも簡単にできていいですね。


> 今月のリリースには間に合わなかったのですが、
> groonga-normalizer-mysqlのmasterでは↑の機能に対応しておきま
> した。groonga-function-snippet_tritonnに入っているテストも動
> くようになっています。
>

ありがとうございます!
これで、一通り、スニペットにまつわる課題を対処できました。

お忙しい中、迅速に要望に対応いただきありがとうございました。

特に問題というわけではないのですが、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がとれるので、トークナイズやスニペット処理には、影響がなく
特に問題ないかもしれません。

以上、よろしくお願いします。



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