Naoya Murakami
visio****@gmail*****
2014年 1月 28日 (火) 08:47:25 JST
お世話になっております。村上です。 あぁ、groonga-normalizer-mysqlに入っているノーマライザーは部 > 分的にしかノーマライザーの機能を実装していないからかもしれま > せん。ノーマライズ前は何バイト目にあった文字か、という情報を > 入れれば動きそうな気が。。。 > (空白を削除するとか、いわゆる全角文字を半角文字に正規化した > りすると何バイト目かというのがずれるので、それを補正するため > の情報です。) > ご説明ありがとうございます! おかげでgrn_stringのchecksが何者か把握することができました。 grn_string_set_checksを使って、grn_stringのchecksをぽつぽつ 入れていけば、いけそうです! とりあえず、スペースのみのずれならできるようになりました。 まだ全角を含むときがうまくいってないのですが、normalizer.cの utf8_normalizeの実装を参考にすれば、対応できそうです。 (この関数、1文字、2文字変数が多くて読むのが大変。。) > >>そうではなく、snippet_html()は、何もスニペットがなかったとき > >>はnullを返すようにして(今は空の配列を返している) > >> > >> snippet_html(...) || "フォールバック時の値" > >> > >>と書けるようにするのがいいと思いました。 > > > >>こう書けるなら何もスニペットがないときはユーザーが制御できま > >>す。 > > > > これができたらすごいいいですね!ゆるりと期待しております! > > これはやっておきました! > ありがとうございます! これで先頭N文字を取得する関数とか所定のタグ範囲を取得する関数を作れば、 Googleみたいにスニペットがないときは、<meta name="description">の内容 を取得するとかできそうですね! これらの関数は、カラムの値を文字列操作するだけでいいので、わりかし簡単に 作れそうですね。(C言語で文字列操作するのは大変そうですが。。) 以上、よろしくお願いします。