[pgsql-jp: 36423] Re: 検索の高速化

J.SHIRA jshira @ rio.odn.ne.jp
2005年 11月 17日 (木) 21:30:27 JST


白澤です。

以下、hori218g @ am.aloka.co.jpさんの
<20051117191754.D160.HORI218G @ am.aloka.co.jp> より一部引用:

<snip>
hori218g> 一致検索の場合は、非常に高速で問題ないのですが、始
hori218g> まる検索('00%')や含む検索('%00%')の場合に非常に遅
hori218g> くなります。
hori218g> 
hori218g> EXPLAINで追いかけてみると一致検索の場合はIndexScan
hori218g> となるのですが、含む検索、及び、始まる検索にすると
hori218g> SeqScanとなってしまいます。
hori218g> 
hori218g> どうにかして早く検索できるようにならないのでしょう
hori218g> か??

実運用で試した事はないのですが、もしソースから構築しているの
でしたら、ソースツリーの中に contrib/fulltextindex あるいは
contrib/tsearch2 と言うのがあります。fulltextindex について
は、以下に参考文献があります。

http://techdocs.postgresql.org/techdocs/fulltextindexing.php

ちょっと見た所、 ascii テキストに対して N-gram っぽい処理を
してインデクスを張っているようです。検索に日本語が含まれない
のでしたら結構使えるかも知れません。

# 付属している Perl スクリプトが参照しているモジュール(Pg)が
# ちょっと古いようなので、そのままでは上手く行かないかも知れ
# ません。

-- Best regards,
     SHIRASAWA, Jun.
 <jshira @ rio.odn.ne.jp>



pgsql-jp メーリングリストの案内