この記事の内容は、時間経過およびプログラムやシステムのバージョン アップなどの事情によって、現状に正しくそぐわない内容、またはそれどころか、場合によっては問題を引き起こす可能性があります。参考程度に留め、関連記事アーカイブを検索してみてください。

トラックバックを Google PageRank 順に並び替える:GooglePageRank

Posted by
ぴろり
Posted at
2006/04/15 14:55
Trackbacks
関連記事 (1)
Post Comment
コメントできます
Category
プラグイン カテゴリ
 Google の PageRank について見て回っていたところ、 最速インターフェース研究会の記事に
被リンクやトラックバックなんかをページランクでソートできたら面白いんじゃないかと思ってみたり。
 との発言が。 …と言うわけで早速、作ってみました。 MovableType のプラグインとして動作しますが、 サイトが PHP 化されている必要があります。

 PHP 化=ダイナミックパブリッシング のことではありません。 ここでは各ページの拡張子が .php になっていれば問題ないと思います。

このエントリーをはてなブックマークに追加  

使用許諾条件など

背景

  ではを受信日時順で並び替えることしかできません。 しかし数ある先の中から有用と思われるページを目立つように表示できれば、 ビジタが良い記事に巡りあうチャンスを少しでも増せるように思えます。 有用なが膨大なのリストに埋もれてしまうのは勿体無いことです。
 ところで、 の人気の秘密にその精度の高さが挙げられます。 有用なを含むページが自然と結果の上位に表示されるようになっており、 これを実現するの一つに と呼ばれる仕組みがあります。 が高いページ=有用なページであるとは完全には言えないまでも、 やはりそれなりにページの有用性を測る尺度として活用できるのではないでしょうか。

 この を取得できる として、 drk7.jp で公開されている MTGooglePageRank があります。 しかし現状のところ、 を取得する URL が固定されてしまうことと、 再構築のタイミングでしか が取得されないという点で上手く使えません。
 またについて言えば、多くのブロガは、 記事を新規作成→公開するタイミングでを送信するでしょうから、 公開されたばかりの記事 URL に対して を取得しようとしても意味がありません。

 そこで、今回、 を使用して を表示するを作ってみました。 ページが表示されるタイミングでキャッシュ済みの を表示し、それに基づいてを動的に並び替えることができます。 はキャッシュに保持しているので、表示のたびに に問い合わせる無駄を省いています。

キャッシュされた は意図したタイミングで最新のものに更新できます


動作の概要

の表示
 キャッシュファイルには URL と のリストが保存されています。 ページが表示される段階で、キャッシュファイルから指定された URL に対する を探します。 目的の URL がキャッシュファイルにあった場合、記録されている を表示します。
 目的の URL がキャッシュファイルになかった場合、次回の更新時に を取得するよう、 キャッシュファイルに URL を書き加えます。
の取得・更新
 URL に対する を取得・更新する別プログラム()が実行されると、 以下の順番でキャッシュファイルのリストの内容を更新します。
  1. 未取得の URL があった場合、 に問合せを行い を取得します
  2. 以前に を取得してから、一定期間以上経過した URL について、 に問合せを行い を更新します
 このプログラムを cron などを利用して、自動で実行されるようにしておくことで、 キャッシュファイル中の を最新に保つことができます。

導入方法

  1. アーカイブに含まれるファイルを全て、 plugins ディレクトリ以下にコピーします
  2. .pl をエディタで開き、 キャッシュファイルのパスを適切に書き換えます。
    my $db_path = '/home/pass/to/your/cache/file/db-index.txt';
    
  3. db-update.cgi をエディタで開き、 キャッシュファイルのパスを適切に書き換えます。
    ;### PageRank データベースファイルを指定します。
    use constant INDEX_DATABASE => '/home/pass/to/your/cache/file/db-index.txt';
    

     .pldb-update.cgiで指定するキャッシュファイルは、どちらも同じパスを指定してください

  4. db-update.cgi には実行権限(755 or 777)を与えておきます
  5. db-update.cgi は以下の モジュールを使用しています。 必要な場合は併せて導入してください。
 なお、動作確認は以下の環境で行っています。

の修正 縲・ を表示するには

 任意の URL の を表示するには <MTGet> コンテナタグを使用します。 また <MTGet> を使用するには、 忘れずに <MTUse> タグを書き加えておく必要があります。 以下は、エントリに送信されたの一覧を、それぞれ記事への に応じた画像で表示する例です。
<$MTUseGooglePageRank$>
<ul>
<MTPings>
  <li>
    <img src="pagerank<MTGetGooglePageRank><$MTPingURL$></MTGetGooglePageRank>.gif">
    <a href="<$MTPingURL$>"><$MTPingTitle$></a><br />
  </li>
</MTPings>
</ul>

の修正 縲・ 順に並び替えるには

 リストアイテムなどを によって並び替えて表示するには、 <MTGPRPrepareContent> コンテナタグ、 <MTGPRPrepareContentParam> コンテナタグ、 <MTGPRContentLoop > タグを使用します。 以下は、エントリに送信されたのうち、 が高いものから順に 5 件だけ、 それぞれ記事への に応じた画像で表示する例です。 ちょっとややこしいですが、オマジナイとして見て下さい(^^;)ゞ
<$MTUseGooglePageRank$>
<ul>
<MTPings>
<MTGPRPrepareContentParam><$MTPingURL$></MTGPRPrepareContentParam>
<MTGPRPrepareContent>
  <li>
    <img src="pagerank<MTGetGooglePageRank><$MTPingURL$></MTGetGooglePageRank>.gif">
    <a href="<$MTPingURL$>"><$MTPingTitle$></a><br />
  </li>
</MTGPRPrepareContent>
</MTPings>
<$MTGPRContentLoop count="5"$>
</ul>

 ここでは先ページの が高い順にアイテムを表示しています。 他にも自分ののエントリを の高い順に並べて記事一覧をりできます。

タグ

$MTUse$
 以下に続くタグの動作に必要な前処理を行う変数タグです。 そのため、各ファイルの先頭あたりにでも、必ず 1 度だけ記述してください。
 オプション等の指定はありません。
MTGetGooglePageRank
 指定された URL の をキャッシュから取得し表示するためのコンテナタグです。 このコンテナタグの内部には http:// から始まる任意の URL を記述することができます。 そのため <MTBlogURL> や、 エントリアーカイブ中で <MTEntryPermalink> を利用して、 URL を持つあらゆるページの を取得することができます。
  が取得できると、このコンテナタグは 0 から 10 の値を返します。 指定された URL がキャッシュファイルにない場合は何も返しません。
 オプション等の指定はありません。
MTGPRPrepareContentParam
 MTGPRPrepareContent に対応する URL を指定します。 ここで指定された URL から を取得し、 その URL に関連付けられたリストアイテムなどのコンテンツを MTGPRPrepareContent で準備します。
 オプション等の指定はありません。
MTGPRPrepareContent
 後述の $MTGPRContentLoop$ で 並び替えに使用されるアイテムを準備するためのコンテナタグです。 この段階では、コンテナタグの内容はまだ表示されていません。 MTGPRPrepareContentParam と必ずセットで使います。
 オプション等の指定はありません。
$MTGPRContentLoop$
 MTGPRPrepareContent で準備しておいたコンテンツを、 に従って並び替えて表示するためのタグです。
 以下のオプションが指定できます。
count
表示するアイテムの最大数を指定します。指定がない場合は最大で 65536 個まで表示します。
offset
最初の offset 個のアイテムを飛ばしてからアイテムの表示を開始します。指定がない場合は最初のアイテムから表示します。
sort_order
アイテムの並び替える順番を ascend(昇順) または descend(降順)で指定します。 指定がない場合は降順( が高いものから順)で表示します

を取得・更新するには

 .pl にはキャッシュファイルを参照して、 指定された URL の を表示するだけの機能しかありません。
 実際に に問合せを行い URL の を取得する処理は db-update.cgi が行っています。 そのため、キャッシュファイルの のリストを最新に保つためには、 定期的に db-update.cgi を実行してやる必要があります。

トラブルシューティング

今この瞬間の が知りたいのですが
が分単位秒単位で変化する値でもないので、ほとんど意味がありません。 加えて、あまり頻繁に問合せると 先生に怪しまれれないかと心配です。
いつまで経っても MTGet が動作しません
db-update.cgi を使ってキャッシュファイルを更新してください。
私のは cron が使えないのですが
申し訳ありません。今の私にはこれが限界です。
db-update.cgi を実行する頻度はどれくらいが適切でしょうか?
サイト規模と問合せる URL の数にもよりますが、 がそれほど頻繁に変化するものでもないことから、数日間隔で問題ないと思われます。 この間隔が長いと新着 URL の 取得が遅れますが、だからと言って数時間おきに実行するのはかなり無駄です。
db-update.cgi でエラーが出ます
flock 命令が悪さをしているかも知れません。機会を見て対応したいと思います。

ダウンロード

このエントリーをはてなブックマークに追加  



関連記事/トラックバック (全 1 件中、最新 5 件まで表示しています)

Open MagicVox.net のスクリーンショット
タイトル
新しいページにPageRankが与えられるまでに要する時間
Trackbacked at
2006/09/27 13:18
from
Open MagicVox.net
概要
 ページの重要度を測る指標の一つである Google の PageRank。 公開されたばかりのページには当然 PageRank は与えられていませんが, では...

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。