Esempio n. 1
0
        private async Task <SearchQueriesReport <CuratedSearchQuery> > GetCuratedSearchQueriesScoreAsync(
            string baseUrl,
            SearchScorerSettings settings,
            IReadOnlyDictionary <string, int> topQueries,
            IReadOnlyDictionary <string, int> topSearchReferrals)
        {
            var minQueryCount      = topQueries.Min(x => x.Value);
            var adjustedTopQueries = topQueries.ToDictionary(
                x => x.Key,
                x =>
            {
                if (topSearchReferrals.TryGetValue(x.Key, out var referrals))
                {
                    return(Math.Max(x.Value - referrals, minQueryCount));
                }

                return(x.Value);
            });

            var scores = RelevancyScoreBuilder.FromCuratedSearchQueriesCsv(settings);

            var results = await ProcessAsync(
                scores,
                baseUrl);

            return(WeightByTopQueries(adjustedTopQueries, results));
        }
Esempio n. 2
0
        private async Task <SearchQueriesReport <FeedbackSearchQuery> > GetFeedbackSearchQueriesScoreAsync(
            string baseUrl,
            SearchScorerSettings settings)
        {
            var scores = RelevancyScoreBuilder.FromFeedbackSearchQueriesCsv(settings);

            var results = await ProcessAsync(
                scores,
                baseUrl);

            return(WeightEvently(results));
        }
Esempio n. 3
0
        private async Task <SearchQueriesReport <CuratedSearchQuery> > GetClientCuratedSearchQueriesScoreAsync(
            string baseUrl,
            SearchScorerSettings settings,
            IReadOnlyDictionary <string, int> topClientQueries)
        {
            var scores = RelevancyScoreBuilder.FromClientCuratedSearchQueriesCsv(settings);

            var results = await ProcessAsync(
                scores,
                baseUrl);

            return(WeightByTopQueries(topClientQueries, results));
        }
Esempio n. 4
0
        private async Task <SearchQueriesReport <SearchQueryWithSelections> > GetTopSearchSelectionsScoreAsync(
            string baseUrl,
            SearchScorerSettings settings,
            IReadOnlyDictionary <string, int> topQueries)
        {
            var topSearchSelectionScores = RelevancyScoreBuilder.FromTopSearchSelectionsCsv(settings.TopSearchSelectionsCsvPath);

            // Take the the top search selection data by query frequency.
            var selectionsOfTopQueries = topSearchSelectionScores
                                         .Where(x => topQueries.ContainsKey(x.SearchQuery))
                                         .OrderByDescending(x => topQueries[x.SearchQuery])
                                         .Take(1000);

            var results = await ProcessAsync(
                selectionsOfTopQueries,
                baseUrl);

            return(WeightByTopQueries(topQueries, results));
        }