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

Back to archive index

HAYASHI Kentaro hayas****@clear*****
2014年 1月 17日 (金) 19:37:45 JST


林です。

On Fri, 17 Jan 2014 13:38:25 +0900
Naoya Murakami <visio****@gmail*****> wrote:

> お世話になっております。村上です。
> 
> 先日、twitterでスニペットAPIのNormalizerAuto以外の適用について、林さんに反応していただきましたが、
> Groongaのスニペットにまつわるさらなる要望です。
> 
> (要望なので、もしできたら、すごく嬉しいなぁという話です。)
> 
> 現状、複数のカラムがある場合に、スニペット対象のカラムに対する検索クエリだけでなく、
> スニペット対象のカラム以外に対する検索クエリでもスニペットが取得されてしまいます。
> 
> たとえば、以下のようなテーブルがあったとして、titleカラムに対して、検索クエリ「database」
> で検索し、且つ、tagsカラム(ベクター)に対して、検索クエリ「sql」で検索し、titleカラムの
> 出力結果に対して、スニペットを取得すると、両検索クエリでスニペットが取得されます。
> 
> ・テーブル
> +----+----------------------+------------------------+
> | id | tags                 | title                  |
> +----+----------------------+------------------------+
> |  1 | sql database         | mysql is fast database |
> |  2 | database performence | mysql performence      |
> +----+----------------------+------------------------+
> 
> ・検索クエリ
> select Title --match_columns title --output_columns "snippet_html(title)"
> --command_version 2 --query "database tags:@sql"
> 
> ・スニペット結果
> "my<span class=\"keyword\">sql</span> is fast <span
> class=\"keyword\">database</span>"
> 
> この例では、「database」も含まれているのでさほど問題ないですが、titleカラムの後半にしか
> 「database」が含まれておらず、titleカラムの前半に「sql」が含まれていると、
> 検索対象の「database」が一つも含まれていないスニペットが取得されてしまいます。
> 
> 望ましくは、スニペット関数に指定したtitleカラムに対する検索クエリでのみ、
> スニペットが取得できるようになると、すごくうれしいです。
> 

詳細の説明ありがとうございます。
この件については、フルスペックなスニペット関数を別途追加したほうが
方向性として良いのではないかという感じです。

1. snippet_htmlはHTMLに特化して便利に使えるようにする(現状)
2. snippet_XXXではタグ名とかスニペットの取得件数とかもろもろ指定してコントロールできるようにする

で、1.と2.の中間層を用意して1.ほどガチガチじゃないけど、ご要望の要件を満たせるようなのを
提供するというのがありかなぁ、という気がしています。
中間層をどう提供するのがいいのか、というのはもう少し検討してみます。

-- 
HAYASHI Kentaro <hayas****@clear*****>




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