|
国産全文検索システム Rast の PostgreSQL バインディング pg_rast が開発されています。 PostgreSQL のテーブルと Rast のデータベースが紐付けられて、 INSERT文でテーブルにレコードを追加するだけで自動でRast側も更新されるので、 透過的でRastを意識せずに済むのが秀逸です。早期の正式リリースに期待! http://blog.postgresql.jp/28 pg_rast のインストールの前に、Rast 本体のインストール手順は↓を参照。 http://kawa.at.webry.info/200508/article_2.html 続けて、pg_rast については↓から入手します。 http://pgfoundry.org/projects/pgrast/ 現時点では、pg_rast のインストールには PostgreSQL 8.0.3 のソースも必要? ●ダウンロードしたソース ―――――――――――――――――――――――――――――――――――― ftp://ring.ocn.ad.jp/pub/misc/db/postgresql/source/v8.0.3/postgresql-base-8.0.3.tar.bz2 ftp://ring.ocn.ad.jp/pub/misc/db/postgresql/source/v8.0.3/postgresql-opt-8.0.3.tar.bz2 http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/pgrast/pg_rast/ ⇒pg_rast については、まだ正式パッケージがリリースされていないので後述。 ―――――――――――――――――――――――――――――――――――― ●PostgreSQL 8.0.3 をコンパイル/インストールする ―――――――――――――――――――――――――――――――――――― bzcat postgresql-base-8.0.3.tar.bz2 | tar xf - bzcat postgresql-opt-8.0.3.tar.bz2 | tar xf - cd postgresql-8.0.3 ./configure --prefix=/usr/local/pgsql-8.0.3 \ --enable-multibyte=UNICODE --disable-locale \ --enable-syslog --with-maxbackends=64 --disable-odbc \ --without-perl --without-java --without-tcl \ --without-tk --without-python --without-CXX gmake su root -c "gmake install" ―――――――――――――――――――――――――――――――――――― ●PostgreSQL 8.0.3 を起動する ―――――――――――――――――――――――――――――――――――― su - postgres /usr/local/pgsql-8.0.3/bin/initdb -E UNICODE -D /pg_data /usr/local/pgsql-8.0.3/bin/pg_ctl -D /pg_data start ―――――――――――――――――――――――――――――――――――― ⇒本当はpostgresql.confやpg_hba.confの設定も行うけど、割愛 ●pg_rast をダウンロード〜インストールする ―――――――――――――――――――――――――――――――――――― mkdir pg_rast/ cd pg_rast wget -O Makefile http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/~checkout~/pgrast/pg_rast/Makefile?rev=1.4 wget -O pg_rast.c http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/~checkout~/pgrast/pg_rast/pg_rast.c?rev=1.7 wget -O pg_rast.sql.in http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/~checkout~/pgrast/pg_rast/pg_rast.sql.in?rev=1.2 wget -O test.pl http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/~checkout~/pgrast/pg_rast/test.pl?rev=1.3 vi Makefile ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ PG_CPPFLAGS += -Wno-unused -I/usr/local/apr-0.9.6/include/apr-0 -I/usr/local/rast-0.2.0/include SHLIB_LINK += -Wl,-rpath,/usr/local/rast-0.2.0/lib -L/usr/local/rast-0.2.0/lib -lrast PGXS = $(shell /usr/local/pgsql-8.0.3/bin/pg_config --pgxs) top_builddir = /home/kappe/download/200508/postgresql-8.0.3 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ⇒各パッケージをソースから入れているため、Makefileの書き換えが必要です。 gmake su root -c "gmake install" ldd /usr/local/pgsql-8.0.3/lib/pg_rast.so ⇒インストールされた.so共有ライブラリのリンク状況を確認しておきます。 ―――――――――――――――――――――――――――――――――――― ●pg_rast の初期設定 ―――――――――――――――――――――――――――――――――――― /usr/local/pgsql-8.0.3/bin/createuser -PW -U postgres rastest ⇒rastestユーザを作成しています。 /usr/local/pgsql-8.0.3/bin/createdb -E UNICODE -U rastest rastest_db ⇒rastest_dbデータベースを作成しています。 /usr/local/pgsql-8.0.3/bin/createlang -U postgres plpgsql rastest_db ⇒rastest_dbでplpgsqlを利用できるように設定します /usr/local/pgsql-8.0.3/bin/psql -U postgres rastest_db ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ \i pg_rast.sql \quit ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ⇒pg_rast で提供される pg_rast_createdb などの FUNCTIONは、 postgres(スーパーユーザ権限)でのみ登録できます ―――――――――――――――――――――――――――――――――――― ●pg_rast 利用のテスト ―――――――――――――――――――――――――――――――――――― /usr/local/pgsql-8.0.3/bin/psql -U rastest rastest_db CREATE TABLE test1 ( uid serial, value text, primary key( uid )); SELECT pg_rast_createdb( '/tmp/test1', 'test1', 'uid', 'value' ); ⇒予め /tmp/test1 ディレクトリは存在しない状態にしておくこと。 postmaster が稼動しているユーザ(例:postgres)権限で作成されます。 INSERT INTO test1 ( value ) VALUES ( 'Hello World!' ); INSERT INTO test1 ( value ) VALUES ( 'PostgreSQL: open source relational database system.' ); INSERT INTO test1 ( value ) VALUES ( 'Rast: A full-text search system' ); INSERT INTO test1 ( value ) VALUES ( 'pg_rast: full text searching on PostgreSQL' ); ⇒test1テーブルを更新するだけで、自動的にRastデータベースも更新されます SELECT * FROM test1 WHERE value LIKE '%system%'; ⇒通常のLIKE句で検索した場合 SELECT * FROM test1 WHERE uid IN (SELECT pg_rast_search( '/tmp/test1', 'system' )); ⇒pg_rast 経由で検索した場合 ―――――――――――――――――――――――――――――――――――― ●ベンチマークテストスクリプトの実行 ―――――――――――――――――――――――――――――――――――― /usr/local/pgsql-8.0.3/bin/psql -U rastest rastest_db ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ set client_encoding="EUC_JP"; \i mytest.sql \quit ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ―――――――――――――――――――――――――――――――――――― ⇒pg_rast の make 時に、test.pl から mytest.sql が生成されています。 ただし、rast のデータベースを格納するディレクトリのパス指定が デフォルトでは誤っているので、予め適宜書き換える必要があります。 指定したディレクトリは pg_rast_createdb 実行時に作成されます。 既に存在するディレクトリを指定した場合はエラーとなります。 ⇒mytest.sql デフォルトでは、100万行の膨大なデータが自動生成されています。 あまりに長いので、ベンチマーク処理完了まで結構な時間がかかります。 ⇒データベースはUNICODEとしていますが、mytest.sqlの中身はEUC_JPなので、 予めclient_encodingを設定しておく必要があります。設定しておかないと 「invalid byte sequence for encoding "UNICODE"」エラーが発生します。 |
| << 前記事(2005/08/20) | トップへ | 後記事(2005/09/01)>> |
| タイトル (本文) | ブログ名/日時 |
|---|
| 内 容 | ニックネーム/日時 |
|---|
| << 前記事(2005/08/20) | トップへ | 後記事(2005/09/01)>> |