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)); }
private async Task <SearchQueriesReport <FeedbackSearchQuery> > GetFeedbackSearchQueriesScoreAsync( string baseUrl, SearchScorerSettings settings) { var scores = RelevancyScoreBuilder.FromFeedbackSearchQueriesCsv(settings); var results = await ProcessAsync( scores, baseUrl); return(WeightEvently(results)); }
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)); }
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)); }