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

Back to archive index

Kouhei Sutou kou****@clear*****
2014年 1月 28日 (火) 17:40:45 JST


須藤です。

In <CANM+Hhc70-_9vDEi****@mail*****>
  "[groonga-dev,02075] Re: 複数の検索クエリがある場合のスニペットの取得対象について<Groonga>" on Tue, 28 Jan 2014 08:47:25 +0900,
  Naoya Murakami <visio****@gmail*****> wrote:

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

お、あたっていましたね!

> とりあえず、スペースのみのずれならできるようになりました。
> まだ全角を含むときがうまくいってないのですが、normalizer.cの
> utf8_normalizeの実装を参考にすれば、対応できそうです。
> (この関数、1文字、2文字変数が多くて読むのが大変。。)

す、すみません。。。

NormalizerAuto(NormalizserNFKC51)は1文字で「キロメートル」
(U+3315)となっているやつを6文字で「キロメートル」に展開し
たりするので処理しながらchecksを伸ばしていますが、
groonga-normalizer-mysqlのやつはそんなことはせずに一文字ずつ
正規化しているはずな気がするので、最初に必要な分だけchecksの
領域を確保できます。なので、少し楽かも。。。

> これで先頭N文字を取得する関数とか所定のタグ範囲を取得する関数を作れば、
> Googleみたいにスニペットがないときは、<meta name="description">の内容
> を取得するとかできそうですね!

先頭N文字を取得する関数は組み込みであるとうれしそうですね!
タグ範囲を取得ではないのですが、テキストからHTMLのタグを抜く
やつはhtml_untag()というのがすでにあったりします!

http://groonga.org/ja/docs/reference/functions/html_untag.html


-- 
須藤 功平 <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 メーリングリストの案内
Back to archive index