[Ludia-users 175] Re: pgs2snippet1 の出力結果は || による文字列連結ができない?

アーカイブの一覧に戻る

kousa****@nttda***** kousa****@nttda*****
2008年 1月 16日 (水) 08:49:51 JST


幸坂です。こんにちは。

> 配列型インデックスや、おそらく普通のマルチカラムインデックスを
> 使っている場合、どのカラムにヒットしたのかを判定してからでないと
> スニペットは作成できないことになると思います。
確かにそうですね。
そもそもエラーを返す仕様が良くないのかもしれません。
pgs2snippet1でヒットしなかった場合は、
NULLを返したほうが良さそうです。

NULLを返す仕様の場合、

CASE WHEN pgs2contain(word, ?) THEN
pgs2snippet1(1, 320, 1, '<em>', '</em>', -1, ?, word)
ELSE
substring(word from 1 for 320)
↓
COALESCE(pgs2snippet1(.....), substring(word from 1 for 320))

と書く事ができます。

NULLで返すべきか検討してみます。 

> -----Original Message-----
> From: ludia****@lists***** 
> [mailto:ludia****@lists*****] On Behalf 
> Of ASARI Takashi
> Sent: Wednesday, January 09, 2008 12:35 PM
> To: ludia****@lists*****
> Subject: [Ludia-users 171] Re:pgs2snippet1 の出力結果は || による文字列連
結ができない?
> 
> 浅利です。
> 
> 08/01/09 に kousa****@nttda*****<kousa****@nttda*****> さんは書きま
した:
> > 幸坂です。こんにちは。
> >
> > ご報告ありがとうございます。
> > 調査したところ、Ludiaのバグのようです。
> > 次のバージョンのLudiaで修正します。
> 
> 素早いご対応、ありがとうございます。
> 
> ついでにちょっと現在の pgs2snippet1() の利用状況を。
> 
> pgs2snippet1() は便利ですが、 配列インデックスを試用している身としては
> ちょっと悩ましい部分もあります。例えば、次の文は当然のようにエラーになりま
す。
> 
> test=# SELECT pgs2snippet1(1, 10, 1, ' *', '* ', -1, 'テスト', 
> '一致しない場合');
> ERROR:  pgsenna2: sen_snip_add_cond() failed 4
> 
> 配列型インデックスや、おそらく普通のマルチカラムインデックスを
> 使っている場合、どのカラムにヒットしたのかを判定してからでないと
> スニペットは作成できないことになると思います。
> 
> 今は CASE WHEN pgs2contain(...) THEN ... END で囲ってみています。
> 
> SELECT pid, iname, oname,
> CASE WHEN pgs2contain(word, ?) THEN
> pgs2snippet1(1, 320, 1, '<em>', '</em>', -1, ?, word)
> ELSE
> substring(word from 1 for 320) || ' ...'
> END AS kwic, pgs2getscore(ctid) AS score FROM p
> WHERE array[iname, oname, word] @@ ?
> ORDER BY score DESC LIMIT 20;
> 
> 上の例では本来 iname, oname も同様に CASE ... END で
> 囲う必要があります。ちょっと煩雑のような気がします。
> もうひとつ、マッチしていない場合のデフォルト値を
> 引数にとるような関数を便利かなあ、と思っています。
> 
> それでは。
> 
> --
> ASARI Takashi @ Todai Fink Team
> http://fink.sodan.ecc.u-tokyo.ac.jp/
> 
> _______________________________________________
> Ludia-users mailing list
> Ludia****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/ludia-users
> 




Ludia-users メーリングリストの案内
アーカイブの一覧に戻る