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