示例#1
0
        public rankHITS(ISpiderEvaluatorBase __parent, double __convergence = 0.0001, int __checkSteps = 10)
            : base("rankTargetsHITS", "Adaptation of HITS algorithm for inner crawl frontier ranking. Convergence (c): "
                   + __convergence + ", iteration steps: " + __checkSteps + ". Targets are ranked by associated Authority + Hub score multiplied by integer factor: {0}."
                   , 1000, 0, __parent)
        {
            description = string.Format(description, scoreUnit);

            convergence = __convergence;
            checkSteps  = __checkSteps;

            hits = new HITSRank();
        }
示例#2
0
        /// <summary>
        /// Prepares the specified context.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="log">The log.</param>
        public override void Prepare(DocumentSelectResult context, ILogBuilder log)
        {
            var byDomain = context.GetByDomain(log);

            foreach (var pair in byDomain)
            {
                WebSiteGraph webSiteGraph = context.domainNameToGraph[pair.Key];

                var matrix = webSiteGraph.GetIDMatrix(scoreUnit);
                p_matrix.Add(pair.Key, matrix);

                switch (algorithm)
                {
                case GraphFactorAlgorithm.HITS:
                    HITSRank hits = new HITSRank();
                    hits.recalculate(matrix, convergence, steps);
                    p_hits.Add(pair.Key, hits);
                    break;

                case GraphFactorAlgorithm.PageRank:



                    var pageRank = new PageRank(matrix.GetMatrix(), alpha, convergence, steps);

                    double[]     dbl = pageRank.ComputePageRank();
                    List <Int32> pri = new List <Int32>();
                    foreach (Double db in dbl)
                    {
                        pri.Add(Convert.ToInt32(db * scoreUnit));
                    }
                    var ranks = new Dictionary <String, Int32>();
                    ranks = matrix.MapToX(pri);

                    p_rank.Add(pair.Key, ranks);


                    break;
                }
            }
        }
示例#3
0
        public override double Score(DocumentSelectResultEntry entry, DocumentSelectResult context, ILogBuilder log)
        {
            // WebSiteGraph webSiteGraph = context.domainNameToGraph[entry.DomainID];

            Double score = 0;

            //var matrix = webSiteGraph.GetIDMatrix();

            switch (algorithm)
            {
            case GraphFactorAlgorithm.HITS:
                if (p_hits.ContainsKey(entry.DomainID))
                {
                    HITSRank hits = p_hits[entry.DomainID];

                    if (hits.ContainsKey(entry.AssignedID))
                    {
                        score = hits[entry.AssignedID] * scoreUnit;
                    }
                }

                break;

            case GraphFactorAlgorithm.PageRank:

                if (p_rank[entry.DomainID].ContainsKey(entry.AssignedID))
                {
                    score = p_rank[entry.DomainID][entry.AssignedID];
                }


                break;
            }


            return(score);
        }
示例#4
0
        public override void onStartIteration()
        {
            hits = new HITSRank();

            hits.recalculate(wRecord.context.targets, convergence, checkSteps);
        }