酒日記、つけはじめてから半年を記念して(?)全文検索を作ってみる。
データは PostgreSQL に入っているので、正規表現を使って
SELECT * FROM dairy WHERE comment ~* 'keyword'
で検索。安直。データ件数はまだ数百件だからこれで問題ないでしょう。このペースで増えるなら 一万件にはまず到達しないし(^^;
最初 PHP3 でスクリプトを書いてみたが、最近使ってなかったのと、どうも正規表現があれだなあ
(<単に Perl の正規表現に慣れているだけ) ということで、結局 mod_perl + CGI::Application + DBI
で書き直し。HTML::Template モジュールを使うと( PHP と違って) スクリプトと HTML
をきれいに分離できるので嬉しい。
# スクリプトの中に "<BR>" とか混じっちゃうと気持ち悪い。
検索は実際のページを置いているプロバイダ(GOL)ではなくて家庭内サーバの aqua (24時間稼働)でやるので、 HTTP のポートだけをルータからポートフォワーディングの設定。外に開放。
フレッツで常時接続しているので、接続が切れて IP アドレスが変わると困る、 というわけで、LWP::UserAgent を使ってルータの管理ページを引っ張ってきて現在の IP アドレス取得 (いまいちスマートじゃないな)、Net::FTP を使ってその情報をサーバの search.html に反映させるスクリプトを書く。
こいつを cron で定期的に回してやれば、接続が切れても外に FTP する時に自動発呼するので大丈夫。
もっとも プロバイダはASAHI ネットの月額800円コースなのだが、
ここ一ヶ月接続が切れたことはなかったり。あまり気にしなくていいのかも。
# aqua で RC5-64 とか ntp とかが動いてて、
定期的にパケットが飛んでるから切られないのかな。