気まぐれSE日記

地方でエンジニアしてます

PostgreSQL の全文検索

Tsearch2 というのを日本語で利用できるようにしたパッチ?でやろうと検討していますが、
対応するPostgreSQLが 7.4.xと8.0.xしかないのでバージョン7.2.8で動くのかを検証をしています。


Tsearch2 日本語化?
http://www.oss.ecl.ntt.co.jp/tsearch2j/


まず、動かないとは思うのですが、どうしても自社アプリが7.2系でしか動かないので
無理矢理動かしてみようと言うことで試してみました。


とりあえず、7.2.8のソースにはtsearch (v2じゃない)が入っていたのでこれをそのまま利用。
日本語のパッチ部分のコンパイルで、エラーが出るのでとりあえず、エラー出る行をコメントアウトしたら通った。

まあ、ここまでは良いんだけど...


サンプルのテーブルを作成する部分でうまくいかないです。


問題のCREATE TABLE ですが、7.2.8 だと、tsvector なんて型はありませんがなと怒られる。

CREATE TABLE tblSample
(
 intIndex int4,
 strText  text,
 idxFTI   tsvector
);


PostgreSQLの資料を読んでるんですが、tsvectorなんてのは出てこないんですよねえ。
どういった型かくらいわかれば定義できそうなのに...。


とりあえず、少し進んで今度はto_tsquery()っていう関数がないと怒られています。
これはソース追ってみても、無いからバージョン上げないと無理っぽ。

ていうか、これができれば進みそうなんだけどなぁ...








結局、7.2.8では断念しました。
じゃあ、最新版の8.2.0とかでは動くのか?とやってみたところ、インストール自体はほぼ問題なく
できたんですが、動作検証がダメでした...。
なんかマニュアル通りやってもトリガーの部分が日本語文字列だとスルーしちゃって、
肝心のkakasi分かち書きがトリガーで更新されて入ってこないんです...。
英文だとできてるんだけどなぁ...。うーん。ダメか。


↓一応参考になりそうな記事はこちらですかね。
http://itpro.nikkeibp.co.jp/article/COLUMN/20061122/254458/?ST=oss&P=1