Finally a clean-room implementation of Google’s Page Rank Algorithm in Java, reverse-engineered from their numerous commentary on Page Rank (or is it Pigeon Rank?).最後に、クリーンルームの実装、 Googleのページランクアルゴリズムはジャワ、リバースエンジニアリングから、数多くの解説ページのランク(またはそれピジョンランクですか? )です。

 public static int getPageRank(url) {     // start off with a random low PR     int pageRank = rand.getInt(0, 3);      if ( isHostedOn('google.com', url) ) {         pageRank++;     } else if ( isHostedOn('microsoft.com', url) ) {         pageRank--;     }     // Support valid pages     if (isValidPage(url) ) {         pageRank += 1;     }      tag_value['b'] = 1;     tag_value['h2'] = 2;     tag_value['h1'] = 3;     tag_value['strong'] = -1; // W3C sux! 公共の静的なint getpagerank (のURL ) ( / /スタート]ボタンをオフに無作為に選ばれた低広報intのPageRank = rand.getint ( 0 、 3 ) ;場合( ishostedon ( ' google.com ' 、 URLを) ) (のPageRank + + ; )他の場合( ishostedon ( ' microsoft.com ' 、 URLを) ) ( PageRankが-; ) / /サポートページに有効な場合( i svalidpage(のU RL) ) ( P ageRankを+ = 1 ; ) t ag_value[の' b ' ] = 1 ; t ag_value[ '水素' ] = 2 ; tag_value [ '中間' ] = 3 ; tag_value [ '強い' ] = -1 ; / / W3Cのsuxを! pageRank = calculateTagsPR(tag_value, pagerank);      // Sergey said good news sites have     // lots of nested tables     tablesOnPage = getTagCount(’table’);     if (tablesOnPage >= 50) {         pageRank += 2;     }      if (pageRank >= 5) {         pageRank = 4; // helps selling AdWords     }      if (linksFrom(’mattcutts.com’, url) >= 4) {         // I link to “clean” sites only         // ? のPageRank = calculatetagspr ( tag_value 、 PageRankの) ; / /セルゲイによると良いニュースのサイトでも、 / /たくさんのネストされたテーブルtablesonpage = gettagcount ( '表' ) ;場合( tablesonpage > = 50 ) ( PageRankを+ = 2 ; )の場合(のPageRank > = 5 ) (のPageRank = 4 ; / /アドワーズ広告の販売)の場合に役立ちます( linksfrom ( ' mattcutts.com ' 、 URLを) > = 4 ) ( / /私のリンクを"クリーン"のサイトにのみ/ /ですか? Matt, Feb 2006         pagerank += 2;     }      pagerank += countBacklinks(url) / 10000;      blacklist1 = getList(’c:\chinese-government-censored.txt’);     blacklist2 = getList(’c:\larry-page-hatelist.txt’);     if ( inArray(blacklist1, url) || inArray(blacklist2, url) ) {         pageRank = 0;     }      d = dashesInUrl(url);     pageRank = (d >= 3) ? マット、 2006年2月のPageRank + = 2 ; )のPageRank + = countbacklinks (のURL ) / 10000 ; blacklist1 = getlist ( ' c : \中国語-政府- censored.txt ' ) ; blacklist2 = getlist ( ' c : \ラリーページ- hatelist.txt ' ) ;場合( inarray ( blacklist1 、 URLを) | | inarray ( blacklist2 、 URLを) ) (のPageRank = 0 ; ) d = dashesinurl (のURL ) ;のPageRank = (営> = 3 )ですか? pageRank -1 : pageRank + 1;      if (inString(url, “how to build a bomb”)) {         // added on request. PageRankの-1 : PageRankの+ 1 ;場合( instring ( URLは、 "爆弾をビルドする方法について" ) ) ( / /追加も承ります。 2004-12-01. 2004-12-01します。 recipient = “peter@homelandsecurity.gov”;         subject = “You might wanna check this…”;         sendMailTo(recipient, subject, url);          // page might still be relevant         pageRank++;     }      if (month() == “June” || month() == “October”) {         // makes people talk about         // PR updates, good publicity         pagerank -= randomNumber(1,3);     }          if (checkIdenticalPageAndLinkColor) {         // spammer!! 受信者= " peter@homelandsecurity.gov " ;アジ研= "をお勧めしますを確認するには… " ; sendmailto (受信者、件名、 URLの) ; / /ページの可能性があります関連のPageRank + + ; )の場合(月日( ) == " 6月" | |月日( ) == " 10月" ) ( / /により人々トークアバウト/ /広報更新プログラム、良い宣伝のPageRank -= randomnumber ( 1,3 ) ; )の場合( checkidenticalpageandlinkcolor ) ( / / spammerの! Googleaxe it!! googleaxeよ! ! pagerank = 0;     }      if (url == “http://www.nytimes.com”) {         // just testing, pls remove tomorrow         // ? のPageRank = 0 ; )の場合( URLを== " http://www.nytimes.com " ) ( / /単にテストは、明日のplsを削除/ /ですか? Frank, June 2003         pagerank = 10;     }      //Don’t show PR above 10     if(pagerank > 10)  pagerank = 10;      return pagerank; } フランクは、 2003年6月のPageRank = 10 ; ) / / 10の場合はありません上記の詳細広報( PageRankの> 10 )のPageRank = 10 ;リターンのPageRank ; ) 

Modified (to Java and added normalization etc.) from idea and original code by更新(国交正常化にはJavaおよび追加されました等)からのアイデアを元のコードを Jack Tangジャック唐 .です。