また会ったね
私はそれを行う方法を理解したと思いますが、よくわかりません
ページランクの計算方法が正しいかどうかは、あなたとあなたが判断するまでお待ちください
最初に、「ページ」テーブルに「outgoinglinks」と呼ばれる新しい列を追加しました。これには、そのページからの発信リンクの数があります
さらに「pagerank」と「pagerank2」の 2 つの列を追加しました。
反復回数をカウントする「i」という別の列
それでは、プログラミングに移りましょう
$step="pg";
for($i=0;$i<50;$i++){
if($step=="pg2"){
$step="pg";
}else{
$step="pg2";
}
$totalpages=5000;
$sql1 = "select id from pages";
$result1 = $DB->query($sql1);
while($row1 = $DB->fetch_array($result1)){
$page_id = $row1["id"];
$sql = "select * from links where to_page_id = '$page_id'";
$result = $DB->query($sql);
$weights_of_links=0;//sum of pageranks/number of outgoing links
while($row = $DB->fetch_array($result)){
$from_page_id = $row["from_page_id"];
$row2 = get_record_select("pages","id = '$from_page_id'");
$outgoinglinks = $row2["outgoinglinks"];
if($step=="pg2"){
$from_page_id_pagerank = $row2["pagerank2"];
}else{
$from_page_id_pagerank = $row2["pagerank"];
}
$weights_of_links +=($from_page_id_pagerank/$outgoinglinks );
}
//final step I tried to write the formula from wikipedia and the paper I have referred to
$pagerank = .15/$totalpages + .85*($weights_of_links);
//update the pagerank
$ii = $i+1;
if($step=="pg2"){
update_record("pages","id='$url_id'","pagerank='$pagerank',i='$ii'");
}else{
update_record("pages","id='$url_id'","pagerank2='$pagerank',i='$ii'");
}
}
}
ノート:
開始する前に、いずれかのページ (任意のページ) の pagerank を 1 に設定し、他のページは 0 のままにしてください。
なぜページランク列が 2 つあるのですか?
これを行ったのは、正確な計算を行うためにすべての反復を分離する必要があると考えているためです。これにより、スクリプトはこれらの 2 つの列を交互に使用し、すべての反復でページ ランク列の 1 つの処理が行われ、新しい結果がもう一方のページランク列に保存されます。
前のコードは何度もループして、ページの実際のページランクに近づくたびに 50 回などの正確な結果を取得します。
私の質問は、ネットワーク内のすべてのページランクの合計が 1 になるかどうかです! はいの場合、Googleはどのようにしてすべてのページに10段階のランクを付けていますか?!
何か案は?
ありがとう