Определяем PageRank(PR) страницы на PHP

PageRank — один из алгоритмов ссылочного ранжирования. Алгоритм применяется к коллекции документов, связанных гиперссылками (таких, как веб-страницы из всемирной паутины), и назначает каждому из них некоторое численное значение, измеряющее его «важность» или «авторитетность» среди остальных документов. Вообще говоря, алгоритм может применяться не только к веб-страницам, но и к любому набору объектов, связанных между собой взаимными ссылками, то есть к любому графу.

Определяем PageRank(PR) страницы на PHP


Математический рейтинг вебстраницы (PageRank) для простой сети, выраженный в процентах (Google использует логарифмическую шкалу). Вебстраница C имеет более высокий рейтинг, чем страница E, хотя есть меньше ссылок на C чем на Е, но одна из ссылок на C исходит из более важных страниц и, следовательно, имеет более высокое значение. Если условно считать что веб-пользователь который находится на случайной странице имеет 85 % вероятность выбора случайной ссылки, и 15 % оставления этой страницы без всякого перехода на её ссылки, то вероятности перехода к странице E с других ссылок равна 8,1 % времени. (15 % вероятности перехода к произвольной странице соответствует коэффициенту затухания 85 %.) Без затухания, все веб-пользователи в конечном итоге попадают на страницы A, B или С, и все остальные страницы будет иметь PageRank нуля. При наличии затухания, страница А эффективно связывает почти все ссылки на страницы в этой Сети, даже если она не имеет своих собственных исходящих ссылок.

PageRank — это числовая величина, характеризующая «важность» веб-страницы. Чем больше ссылок на страницу, тем она «важнее». Кроме того, «вес» страницы А определяется весом ссылки, передаваемой страницей B. Таким образом, PageRank — это метод вычисления веса страницы путём подсчёта важности ссылок на неё.

Скульптурирование PageRank (англ. PageRank sculpting) — манипулирование количеством PageRank, передаваемого через конкретные ссылки страницей N другим страницам с помощью присвоения одной или нескольким ссылкам, идущим с этой страницы, атрибута nofollow, что приводит к удержанию большего PageRank («веса») на странице N с целью дальнейшей его передачи нужным страницам. В 2009 году Мэтт Каттс заявил, что скульптурирование PageRank больше не работает, т.к. теперь постановка любых ссылок (как с атрибутом nofollow, так и без него) приводит к равномерному распределению передаваемого PageRank («веса») между исходящими ссылками.

function fch($csm)
{
    if($csm < 0)
        $csm += 4294967296.0;
 
    $a = (int)fmod($csm, 10);
    $t = 1;
    $b = (int)($csm / 10);
    while($b) {
        $c = $b % 10;
        if($t)
            $c = (int)($c / 5) + ($c * 2) % 10;
        $b = (int)($b / 10);
        $a += $c;
        $t ^= 1;
    }
     
    $a = 10 - $a % 10;
    if($a == 10)
        return ord('0');
     
    if($t)
        return ord('0') + (int)(($a & 1 ? $a + 9 : $a) / 2);
 
    return ord('0') + $a;
}
 
function checksum($str)
{
    if(strlen($str) == 0)
        return 0x1000;
         
    /* the floating point hacks are due to PHP's bugs when handling integers */
 
    $a = 5381.0;
    for($i = 0; $i < strlen($str); $i++)
        $a = fmod($a + ($a * 32) + ord($str[$i]), 4294967296.0);
    if($a > 2147483647.0)
        $a -= 4294967296.0;
    $a = (int)$a;
 
    $b = 0.0;
    for($i = 0; $i < strlen($str); $i++)
        $b = fmod(($b * 64) + ($b * 65536) - $b + ord($str[$i]), 4294967296.0);
    if($b > 2147483647.0)
        $b -= 4294967296.0;
    $b = (int)$b;
     
    $a = (($a >> 6) & 0x3ffffc0) | (($a >> 2) & 0x3f);
    $c = (($a >> 4) & 0x3ffc00) | ($a & 0x3ff);
    $d = (($c >> 4) & 0x3c000) | ($c & 0x3fff);
    $c = ((($d & 0x3c0) << 4) | ($d & 0x3c)) << 2;
    $a = $b & 0x0f0f;
    $e = $b & 0x0f0f0000;
    $b = (($d & 0xffffc000) << 4) | ($d & 0x3c00);
 
    return ($b << 10) | $c | $a | $e;
}

function getPR($url) 
{ 
    $PR_SERVER = "http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank&q=info:";
    $csm = checksum($url);
    $result = file_get_contents(sprintf($PR_SERVER."%s&ch=7%c%u", $url, fch($csm), $csm));
    $result = str_replace('Rank_1:1:', '',$result);

    if (empty($result))
        return 0;  
    else 
        return $result;
}


Пример:

echo $result = getPR('http://abcvg.com/');


Не актуально! Для истории пусть будет!



Просмотров: 1842
9.02.2015, 22:08 -

Категория: Статьи » Программирование » PHP