public override void onStartIteration() { var matrix = wRecord.context.targets.GetLinkMatrixRotated(); if (matrix != null) { pageRank = new PageRank(matrix, alpha, convergence, checkSteps); double[] dbl = pageRank.ComputePageRank(); List <int> pri = new List <int>(); foreach (double db in dbl) { pri.Add(Convert.ToInt32(db * scoreUnit)); } ranks = wRecord.context.targets.linkMatrix.MapToX(pri); } }
/// <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; } } }