y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

PostgreSQL8.2 + Ludia1.4.0で全文検索

日本語が通って、形態素解析にもn-gramにも対応できる、RDBMS全文検索として、MySQLPostgreSQLかを比べた結果。なんとなくPostgreSQLとLudiaの組み合わせに決めた。オープンソースの場合、色々と但し書きがあるのが通常なのだが、Ludiaに関しては、既存DBやPostgreSQLへの影響が無く、プログラムからも簡単に利用出来て、インデックス再生成の時間ロスも少なそう。加えてWindows向けインストーラバイナリが存在するので、ちょっと試してみるのにもかなりお気軽。
過去にPostgreSQL+ASP.NET+GoogleMapsの仮想サーバイメージを構築していたので、ここにLudiaも入れてみることにした。「PostgreSQLの空間検索と全文検索をミックス出来たりしたらおもしろいことになりそう」とのなんとなくの期待もある。(住所あいまい検索に全文検索が使えるのはおいしいね。これ、後のお楽しみだけど)
ludia-1.4.0PG82win.zip
PostgreSQLから『Ludia』でSennaの全文検索エンジンを試した
PostgreSQL/Ludia/Senna の全文検索インデックスとクエリプラン
早速インストールしてみた。SQLスクリプトを流したら、すんなりと出来た。

動画の頭出しに使う字幕テキストを格納する用途で、下記のテーブルを作成。
id シリアル型
filename 文字列型4kb
starttime 時刻型
endtime 時刻型
subtitle テキスト型

CREATE TABLE videoindex (id serial,filename varchar(4096),starttime time,endtime time,subtitle text);
CREATE INDEX idx_subtitle ON videoindex USING fulltext(subtitle);
CREATE INDEX idx_filename ON videoindex (filename);

さぁ、明日からデータを登録して、ASP.NETから全文検索のテストをしてみよう。
(動画字幕テキストを登録して、全文検索→頭出しだーー!。にわかに熱を帯びてきた)