Beispiel #1
0
        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);
        }