public async Task Balance(string url, string category) { var hashSet = new HashSet <string>(); hashSet.Add(url); while (hashSet.Any()) { var first = hashSet.First(); hashSet.Remove(first); var page = await pageConfidenceDataService.GetPage(first); var links = page.GetLinks(); var linkScores = new List <double>(); foreach (var link in links) { pageConfidenceDataService.AddRefer(first, link); var linkPage = await pageConfidenceDataService.GetPage(link); if (linkPage.GetPageScore(category) == null) { hashSet.Add(link); } linkScores.Add(linkPage.GetPageScore(category) ?? linkPage.GetDocumentScore(category) ?? 0); } // calculate score var score = pageConfidenceCalculator.Calculate(page.GetDocumentScore(category) ?? 0, linkScores); var pageScore = page.GetPageScore(category); if (pageScore == null || Math.Abs(pageScore.Value - score) > EPS) { foreach (var refer in pageConfidenceDataService.GetRefers(first)) { hashSet.Add(refer); } } page.SetPageScore(category, score); } }
public void CalculateNoLinksTest(double documentScore) { var score = pageConfidenceCalculator.Calculate(documentScore, new double[0]); Assert.Equal(documentScore, score); }