Postgresの最近のブログ記事

横浜XにデータベースはPostgreSQLを使用しています。
やはり全文検索機能がないのは辛いですね。
よってludiaを導入する事にしました。
そしてFC2のPostgreSQL7.4を8.2アップ、でもデータも移行しないと。
詳しくは

■必要なパッケージ
postgresql-8.2.3.tar.gz
ludia-1.0.0.tar.gz
mecab-0.93.tar.gz
mecab-ipadic-2.7.0-20060707.tar.gz
senna-1.0.1.tar.gz

■PostgreSQL8.2.3のINSTALL
mkdir /usr/local/postgresql-8.2.3
./configure --prefix=/usr/local/postgresql-8.2.3
make
su
make install
chown -R postgres:postgres /usr/local/postgresql-8.2.3
ln -s /usr/local/postgresql-8.2.3 /usr/local/pgsql

■MeCabのインストール
tar xvfz mecab-0.93.tar.gz
cd mecab-0.93
./configure --with-charset=utf8 --with-libiconv-prefix=/usr/local/lib
make
su
make install

■MeCab辞書のインストール
cd mecab-ipadic-2.7.0-20060707
./configure --with-charset=utf-8
make
su
make install

■Sennaのインストール
cd senna-1.0.1
./configure
make
su
make install

■設定ファイル
su
mkdir /var/senna
echo "DEFAULT_ENCODING utf8" > /var/senna/senna.conf

■Ludiaのインストール
./configure --with-pg-config=/usr/local/pgsql/bin/pg_config
make
su
make install

■PostgreSQL設定
postgresql.conf
custom_variable_classes = 'ludia'
ludia.max_n_sort_result = 10000
ludia.enable_seqscan = on
ludia.sen_index_flags = 31
ludia.max_n_index_cache = 16

■テストDBの作成
createuser playboy
Shall the new role be a superuser? (y/n) y

createdb testdb
psql -f /usr/local/pgsql/share/pgsenna2.sql testdb

■テスト
CREATE TABLE table1 (col1 text, col2 varchar(128));
INSERT INTO table1 VALUES ('すもももももももものうち', 'あの壺はよいものだ');
INSERT INTO table1 VALUES ('ももから生まれた桃太郎', 'あの壷はよいものだ');
CREATE INDEX index1 ON table1 USING fulltext(col1);
INSERT INTO table1 VALUES ('くりきは頑張るぞ', 'あの壷はよいものだ');

検索の実行
SELECT * FROM table1 WHERE col1 @@ 'もも';
col1 | col2
--------------------------+--------------------
すもももももももものうち | あの壺はよいものだ
ももから生まれた桃太郎 | あの壷はよいものだ
(2 rows)

SELECT col1, pgs2getscore(table1.ctid, 'index1') FROM table1 WHERE col1 @@ 'もも';
col1 | pgs2getscore
--------------------------+--------------
すもももももももものうち | 10
ももから生まれた桃太郎 | 5

# SELECT * FROM table1 WHERE col1 @@ 'もも';
col1 | col2
--------------------------+--------------------
すもももももももものうち | あの壺はよいものだ
ももから生まれた桃太郎 | あの壷はよいものだ
(2 rows)

# SELECT pgs2getnhits();
pgs2getnhits
--------------
2
(1 row)

# SELECT * FROM table1 WHERE col1 @@ 'もも' LIMIT 0;
col1 | col2
------+------
(0 rows)

# SELECT pgs2getnhits();
pgs2getnhits
--------------
2
(1 row)

とここまで、やってみたものの
結構内部で複雑なことをしているので、なかなか早くなった実感がないですね。

Quote!(引用する!) はてなブックマークに追加

プロフィール

Tomoki Kuriki

コツコツやれば良い事あるさ!!

横浜天気

2007年3月: 月別アーカイブ

ウェブページ

アルバム

Twitter

このアーカイブについて

このページには、過去に書かれたブログ記事のうちPostgresカテゴリに属しているものが含まれています。

前のカテゴリはphpです。

次のカテゴリは日記です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。