Webページから単語抽出して遊ぼう.前回は,キーワードとしてふさわしくないような単語まで抽出されて,頭を抱えたところで終わった.今回はそのページに検索エンジンでの検索で使われたキーワードを取得して使ってみる.

2009-08-01 対象の検索エンジンにBingを追加しました
2008-03-02 初版

この状況を何とかしようとして普通に考えると,

  • キーワードとしてふさわしい単語のリスト(辞書)を整備する

ということになるが,これは終わりのない面倒な作業だ.

そこで,

  • カモランドへのアクセスは,検索エンジン経由が圧倒的に多い

という事実に着目した.

 ↑Google Analyticsによるカモランドのリファラーのグラフ

検索エンジン経由で来てそのページが表示されたということは,そこで使われた検索キーワードはそのページに関係が深いはず(検索エンジンはそういう風に作られている)なので,その検索キーワードをそのページを代表するキーワードだと考えても,おかしくないはずだ.

すると,そもそもの目的の「関連ページを表示する」を考えたとき,

  • サイト内で,そのキーワードを含む他のページが,そのページと関連があるページだ

と言えるのではなかろうか.

そこで,検索エンジン経由でカモランドのページに到達した場合は,検索で使われたキーワードを含むページを,そのページの関連ページと見なして下部に表示するようにしてみた.

具体的には,「redhat oracle」というキーワードでGoogleで検索する と,カモランド(プログラマー'sペイジ)のページが上位あたり(今日は2位)に出るが,そのリンクをクリックして表示されたカモランドのページでは,関連ページの表示部が

このサイト内の関連ページ (redhat oracle)
という風にキーワード検索の結果になっているのです. まぁ,LPO(ランディングページ最適化)もどきですわ.

あと、日本語文字の検索語への対応については、少し考える必要がある。検索語のエンコーディングが不定なので、動的な文字コード判定を組み込む必要がある. 例えば,GoogleならリファラーURLのパラメータieにエンコーディングが含まれているとかいう話で、これを他の検索エンジンについても調べる必要がある。

ちょっと、Apacheの過去ログを眺めたり実サイトで実際に叩いたりして,調べてみた.

検索エンジン名エンコパラメータ名無指定時のエンコ備考
GoogleieUTF-8 or Shift_JIS
YahooeiUTF-8 or EUC-JP
Bing-UTF-8
LiveSearchcpUTF-8cp=932(ほぼShift_JIS)のみ確認
MSNcpUTF-8cp=932(ほぼShift_JIS)のみ確認
gooieEUC-JP
Infoseek-UTF-8 or EUC-JP
nifty(昔)ieShift_JIS or EUC-JPパスは/cgi-bin/
nifty-UTF-8パスは/websearch/
biglobe-Shift_JIS or EUC-JP
Mooter-UTF-8

カモランドで収集した情報だけなので、漏れがあると思います。今のところ、これらの情報を使って文字コードを判別するようにすることで、日本語のキーワードも正しく扱えているようだ。

なおRubyによる実装が、Rubyでrefererから検索キーワードを抽出するにあります。

[参考]


© 2023 KMIソフトウェア