2004/12/01(水) リダイレクト
「検索エンジンから来たアクセスの検索キーワードを自動的にNamazuの検索フォームに入れられないか」との質問メールをいただく。トップページをPerlやRubyなどスクリプト言語で書いている場合はHTTP_REFERERから検索キーワードを抽出することは簡単だが、普通のHTMLファイルでは難しい(tDiaryならプラグインで対応できそう)。そういう風な返事を出したのだが、よく考えたら、.htaccessが使えるなら、検索フォームにキーワードを入れることはできなくても、Namazuで自動的に検索させることは可能だろう。hnsのIntellisearchがこれと同じようなことをしている。
HTTP_REFERERから検索キーワードを抽出して、リダイレクトでNamazuに渡すCGIスクリプトを書き、.htaccessですべてのアクセスをこれにリダイレクトすればいい。HTTP_REFERERに検索キーワードがなかった場合は普通のトップページに、あった場合はNamazuに飛ばす。CGIスクリプト自体も簡単に書けそうだ。
ただ、Intellisearchを使っていた時に感じたのはGoogleの検索能力に比べて、Namazuの検索能力はフレキシブルではないこと。Googleは多少のスペルミスがあっても検索結果に表れるが、Namazuの場合はキーワードが完全に一致しないと出てこない。だからGoogleから来た人は「検索式にマッチする文書はありませんでした」とのNamazuの検索結果を見せられる場合がある。
それに自分のホームページのファイルがGoogleにすべてインデクシングされているなら、こんなことをする必要もない。Googleの利用者はNamazuを介さなくても目的のページにたどりつけるわけだから。まあ、インデクシングのタイミングがずれるという問題はつきまとうんですがね。
付け加えておくと、検索フォームに自動的に検索キーワードを入れるトップページをperlで作るのは難しくない(いや、RubyでもPHPでも難しくはないでしょうが、僕はPerlの知識しかないので)。最初の方でキーワードの抽出処理を行って、変数$wordに入れる。後はヒアドキュメントでHTMLを書いていき、Namazuの検索フォームのvalueに$wordを入れておけばいいだろう。個人的には先に書いたような理由でこういう機能を持たせることだけを目的に、トップページをCGIにする必要性は感じませんけどね。
これはSleipnirでもできますね。ホームページを持つ人にとって、両方で表示を確認できるのは便利。ブラウザエンジンの切り替えが簡単なら、Netscapeは久しぶりに利用者が多くなるのではないか。正式版の早期リリースを期待。
商品発送のお知らせ
SONY Styleからメール。ということは、金曜日には着きそうだ。本格的にデータのバックアップを始めねば。