[pgsql-jp: 30833] [summary] namazu〜PostgreSQL連携を試してみました
Junji TERAMOTO
teramoto.junji @ lab.ntt.co.jp
2003年 8月 22日 (金) 10:17:33 JST
寺本と申します。
少し(だいぶ?)昔の投稿ですが、前田@nanet様の
[pgsql-jp 20023] namazu とPostgreSQLの連携
に興味がありましたので、現行の環境で実行してみました。
その際の変更した点などについて、サマリとしてまとめて投稿します。
有益なプログラムを提供いただき、ありがとうございます>前田様
変更点などについては、100%PostgreSQLやnamazuのことを理解して行ったわけ
ではないので、誤り等ございましたらご指摘ください。
---以下サマリ
【環境】
debian linux 2.4.18
PostgreSQL 7.3.3
namazu 2.0.12
kakasi 2.3.4
【変更】
Makefileを以下のように変更した。
# リンクする.oファイルの追加とpostgresヘッダファイル位置の追加
--->8---ここから--->8---
26a27
> ../nmz/score.o \
32a34
> ../intl/dcigettext.o \
35a38,39
> ../intl/localcharset.o \
> ../intl/plural.o \
39c43
< $(CC) -c -g -fpic -I/usr/local/pgsql/include -I.. -I../lib pgnmz.c
---
> $(CC) -c -g -fpic -I/usr/local/pgsql/include -I/usr/local/pgsql/include/server -I.. -I../lib pgnmz.c
--->8---ここまで--->8---
ソースファイルを以下のように変更した。
# VARSIZE(retp)をVARTT_SIZEP(retp)に書き換え
--->8---ここから--->8---
195c195
< VARSIZE(retp) = strlen(data) + VARHDRSZ;
---
> VARATT_SIZEP(retp) = strlen(data) + VARHDRSZ;
201c201
< VARSIZE(retp) = strlen(data) + VARHDRSZ;
---
> VARATT_SIZEP(retp) = strlen(data) + VARHDRSZ;
211c211
< VARSIZE(retp) = strlen(data) + VARHDRSZ;
---
> VARATT_SIZEP(retp) = strlen(data) + VARHDRSZ;
220c220
< VARSIZE(retp) = strlen(data) + VARHDRSZ;
---
> VARATT_SIZEP(retp) = strlen(data) + VARHDRSZ;
232c232
< VARSIZE(retp) = strlen(data) + VARHDRSZ;
---
> VARATT_SIZEP(retp) = strlen(data) + VARHDRSZ;
--->8---ここまで--->8---
あとは、makeして、出来上がった pgnmz.so を /usr/local/pgsql/lib にコピ
ーします。
【使用例】
# 改行ないのでが見苦しいですが...
関数の登録は以下のようなSQLになります。
PostgreSQLが7系のため、readme.txtと違い、最後が"LANGUAGE C;"になります。
(Cをシングルコーテーション''でくくらない)
--->8---ここから--->8---
CREATE FUNCTION pgnmz_score(text,text,text)
RETURNS int4
AS '/usr/local/pgsql/lib/pgnmz.so'
LANGUAGE C;
CREATE FUNCTION pgnmz_summary(text,text)
RETURNS text
AS '/usr/local/pgsql/lib/pgnmz.so'
LANGUAGE C;
--->8---ここまで--->8---
試験的に、手元にあったMHonArcの出力するHTMLをインデックスしたものを対
象に試用してみました。
--->8---ここから--->8---
CREATE TABLE MAILLIST (author text, title text, file text);
--->8---ここまで--->8---
のようにテーブルを作成し、データを流し込みました。(下記に例示します)
--->8---ここから--->8---
SELECT * FROM MAILLIST LIMIT 3;
author | title | file
-------------+--------------------------------+-----------------------------------------
aaa @ foo.bar | RCSの使い方 | /home/archive/public_html/msg00004.html
bbb @ foo.bar | 新しく買ったSUNの設定方法 | /home/archive/public_html/msg00005.html
ccc @ foo.bar | 端末セッションのログを取りたい | /home/archive/public_html/msg00006.html
(3 行)
--->8---ここまで--->8---
これを、readme.txtに載っているようなサンプルSQLで利用した例が次のよう
になります。
--->8---ここから--->8---
SELECT author, title,
pgnmz_score('/home/archive/index', file, 'apache') AS score
FROM MAILLIST
WHERE pgnmz_score('/home/archive/index', file, 'apache') > 0
AND author = 'bbb @ foo.bar';
author | title | score
-------------+--------------------------------------+-------
bbb @ foo.bar | www のapacheを1.3.11 →1.3.20 にする | 32
bbb @ foo.bar | Re: charlie成長記録 | 8
bbb @ foo.bar | mailman2.0.6日本語版のインストール | 3
bbb @ foo.bar | Re: charlie成長記録 | 12
(4 行)
--->8---ここまで--->8---
以上、何かのお役に立てば幸いです。
---
J U N J I T E R A M O T O
--- NTT Cyber Space Laboratories Information-base Project
--- mailto:teramoto.junji @ lab.ntt.co.jp
pgsql-jp メーリングリストの案内