[pgsql-jp: 37879] Re: lc_collat=Cだとto_tsqueryに日本語が使えない
Tatsuo Ishii
ishii @ sraoss.co.jp
2006年 12月 28日 (木) 20:25:39 JST
石井です.
> 石井さんありがとうございます
どういたしまして.
> > tsearch2はCロケールでは日本語が使えません.これはtsearch2がwcstombsな
> > どのワイド文字関数にずぶずぶに依存した実装になっているからです.なんと
> > か直そうとは思い,努力しているところです:-)
>
> 了解です。
> 陰ながら応援しています。
>
> > ワークアラウンドとしては,to_tsqueryを使わず,
> > SELECT * FROM foo WHERE bar @@ tsquery_in('検索語');
> > などとすればよいでしょう.
>
> この方法でできました!!
> がシーケンシャルスキャンになっている様子、、、
>
> うーむ、あちらをたてればこちらがたたず状態ですね
tsquery_inを呼び出すimmutableな関数を作ってあげればインデックススキャ
ンになると思います.
CREATE OR REPLACE FUNCTION myquery(str TEXT) RETURNS TSQUERY AS $$
SELECT tsquery_in(textout($1));
$$ LANGUAGE SQL IMMUTABLE;
として,
SELECT * FROM foo WHERE bar @@ myquery('検索語');
ではどうでしょう?
--
Tatsuo Ishii
SRA OSS, Inc. Japan
pgsql-jp メーリングリストの案内