Senna 1.0.1+Ludia 1.0.0 再インストール手順メモ

Senna バージョン 1.0.1 が リリース されました。
PostgreSQL 8.1 (Debian) に Senna+Ludia を再インストールしてみたので、手順メモ。

(1) http://sourceforge.jp/projects/senna/files/ から最新版 senna をダウンロードする
$ wget http://downloads.sourceforge.jp/senna/24191/senna-1.0.1.tar.gz
$ tar zxvf senna-1.0.1.tar.gz
$ cd senna-1.0.1
$ ./configure --prefix=/usr/local/senna-1.0.1 --enable-nfkc --without-mecab --without-mysqlsrc
$ make
$ sudo make install
もし、make の時点でとても時間がかかる(数分以上)なら、こちら を参照して
make をいったん CTRL+C で中断して、↓を実行してください。
$ ( cd lib; ../libtool --tag=CC --mode=compile \
gcc -I. -I.. -Wall -O0 -fno-strict-aliasing -g -MT nfkc.lo \
-MD -MP -MF .deps/nfkc.Plo -c -o nfkc.lo nfkc.c ) && make

(2) http://sourceforge.jp/projects/ludia/files/ から最新版 ludia をダウンロードする
$ wget http://downloads.sourceforge.jp/ludia/24230/ludia-1.0.0.tar.gz
$ tar zxvf ludia-1.0.0.tar.gz
$ cd ludia-1.0.0
$ ./configure --with-senna-cfg=/usr/local/senna-1.0.1/bin/senna-cfg --with-pg-config=/usr/bin/pg_config
$ make
$ sudo make install

(3) postgresql.conf(の末尾あたり)に Ludia のパラメタ変数を設定する
$ sudo vi /etc/postgresql/8.1/main/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

(4) postgresql.conf を反映させる(パスは環境により異なります)
$ sudo /etc/rc3.d/S19postgresql-8.1 reload

(5) pgsenna2.sql を実行して、データベースに Ludia を適用する

Ludia のバイナリ(pgsenna2.so)をインストールするだけでは、
Ludia+Senna の全文検索機能は利用できません。
pgsenna2.sql を実行して、関数や演算子を登録する必要があります。
データベースごとに実行します。↓の例は testing_db というDBの場合。
$ psql -U postgres -f /usr/share/postgresql/8.1/pgsenna2.sql testing_db
既に Ludia がインストールされている状況だと、pgsenna2.sql で
↓のようなエラーが表示されてしまいます。
ERROR: duplicate key violates unique constraint "pg_am_name_index"
ERROR: duplicate key violates unique constraint "pg_am_name_index"
ERROR: duplicate key violates unique constraint "pg_am_name_index"
ERROR: operator @@ already exists
ERROR: operator class "text_ops" for access method "fulltext" already exists
ERROR: operator class "text_ops" for access method "fulltextb" already exists
ERROR: operator class "text_ops" for access method "fulltextu" already exists
以下の手順で、Ludia が登録した演算子などを削除できます。(簡易アンインストール)
$ psql -U postgres testing_db

BEGIN;
DROP OPERATOR @@ ( text, text ) CASCADE;
DELETE FROM pg_am WHERE amname IN ( 'fulltext', 'fulltextb', 'fulltextu' );
COMMIT;
改めて↓を実行すると、正しく最新版の関数・演算子に更新されます。
$ psql -U postgres -f /usr/share/postgresql/8.1/pgsenna2.sql testing_db

(6) 適用されている Ludia のバージョンを確認する
$ psql -U postgres -c "SELECT pgs2version();" testing_db
pgs2version
-------------
ludia 1.0.0
(1 row)

(7) 試しに Ludia で郵便番号辞書を検索してみるには↓の記事を参照。

[PostgreSQL] 郵便番号辞書をデータベースに投入する手順
PostgreSQL/Ludia/Senna の全文検索インデックスとクエリプラン

別のマシンにて。PostgreSQL 7.4.x だと、Ludia ってインストールできないのかな?がーん。
 

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 2

なるほど(納得、参考になった、ヘー)
面白い

この記事へのコメント

この記事へのトラックバック

  • PostgreSQL + Senna + Luida on CentOS on coLinux

    Excerpt: せっかくMySQLの全文検索を設定したのだけれども会社ではPostgreSQLを使うもんだからそっちの扱いのほうが慣れてしまった。 というわけでPostgreSQLにも全文検索エンジンを追加して.. Weblog: Copy/Cut/Paste racked: 2007-05-17 03:36