[pgsql-jp: 35804] Re: 全文検索モジュールpg_rast

Satoshi Nagayasu satoshi.nagayasu @ gmail.com
2005年 8月 7日 (日) 01:02:47 JST


永安です。

pg_rastですが、地味に改良を続けています。
ただし、まとまったリリースはしていないので、CVSから取ってください。

http://pgfoundry.org/scm/?group_id=1000126

最近ですと、

- 更新、削除系の関数の実装
- トリガの実装。pg_rast_createdb()時に自動的に作成
- データベースのエンコーディングをPostgreSQLとRastで合わせる

といったところなどでしょうか。

以下のサンプルでは、通常のLIKE文を使うと9秒以上かかるところを、
pg_rastを使うと6msで実行できているサンプルです。
--------------------------------------------------------------
snaga=# INSERT INTO t1 values ( 1000000, 'アメンボ赤いなあいうえお');
NOTICE:  SELECT pg_rast_register('/home/snaga/tmp/rast','t1','1000000','
アメンボ赤いなあいうえお')
NOTICE:  dbpath=/home/snaga/tmp/rast, relname=t1, keycol=1000000,
datacol=アメンボ赤いなあいうえお
CONTEXT:  SQL statement "SELECT
pg_rast_register('/home/snaga/tmp/rast','t1','1000000','アメンボ赤いなあ
いうえお')"
PL/pgSQL function "pg_rast_register_trig_func_t1_uid_name" line 15 at
execute statement
INSERT 12522666 1
Time: 174.770 ms
snaga=# SELECT * FROM t1 WHERE name like '%赤いな%';
   uid   |           name
---------+--------------------------
 1000000 | アメンボ赤いなあいうえお
(1 row)

Time: 9276.305 ms
snaga=# SELECT * FROM t1 WHERE uid IN ( SELECT
pg_rast_search('/home/snaga/tmp/rast', '赤いな')::INTEGER );
NOTICE:  hit_count: 1
   uid   |           name
---------+--------------------------
 1000000 | アメンボ赤いなあいうえお
(1 row)

Time: 6.209 ms
snaga=#
--------------------------------------------------------------

ではでは。

Satoshi Nagayasu wrote:
> 永安です。
> 
> 全文検索システムRastの機能を、PostgreSQLから利用するための
> 関数を作成しました。
> 
> ・Rast http://www.netlab.jp/rast/
> 
> PostgreSQLで遅いと言われるLIKE文の部分一致の検索(相当の処理)を、
> 外部ライブラリを使って高速化することが可能になります。
> 
> まだ大雑把な実装なのですが、興味のある方は
> 
> http://pgfoundry.org/projects/pgrast/
> 
> からご利用ください。
> 
> では。




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