Beispiel #1
0
        public override void Visit(int intURLID)
        {
            base.Visit(intURLID);
            ArrayList arlsInLinks = GetInLinks(intURLID);
            float     dcmPageRank = 0.0f;

            if (arlsInLinks.Count > 0)
            {
                float dcmPageRankOfInLink = 0.0f;
                int   intNumOfOutLinks    = 0;
                foreach (int intURLInLink in arlsInLinks)
                {
                    dcmPageRankOfInLink = RankHandler.GetRank(intURLInLink, 1.0f);

                    intNumOfOutLinks = GetNumberOfOutLinks(intURLInLink);
                    dcmPageRank     += (intNumOfOutLinks == 0?0.0f:dcmPageRankOfInLink / intNumOfOutLinks);
                }
                dcmPageRank = (1.0f - PageRankDParameter) + PageRankDParameter * (dcmPageRank);
                // PR(A) = (1-d) + d(PR(t1)/C(t1) + ... + PR(tn)/C(tn))
                // http://www.webworkshop.net/pagerank.html
            }
            else
            {
                dcmPageRank = 1.0f;
            }
            RankHandler.UpdateRank(intURLID, dcmPageRank);
            if (TimeSpanPermitsToReport())
            {
                ReportIfTimeSpanPermits(string.Format("Calculated Pagerank for URL with ID:[{0}]. Pagerank is [{1:0.000000000}] with total Inlinks [{2}]. Url Iter is in count [{3}] of total [{4}]", intURLID, dcmPageRank, arlsInLinks.Count, intCurrentURL, intRowsCount));
            }
        }