private async Task <ResourceList <LogEntry> > QueryAsync(string q) { var allResults = new List <LogEntry>(); foreach (var host in _logger.ListHosts().Items) { var results = GetIndex(host).Search(q.ToLower()).GroupBy(h => h.DocumentKey).ToDictionary(h => h.Key, h => h.Max(x => x.Score)); var matches = await _logger.GetRecentRequests(-1, e => results.ContainsKey(e.OriginUrl.ToString())); foreach (var match in matches.Items) { allResults.Add(match.SetOrder((float)results[match.OriginUrl.ToString()])); } } return(new ResourceList <LogEntry>(allResults.OrderByDescending(r => r.Order)) { TotalSize = _logger.LogFileSize }); }