Ejemplo n.º 1
0
        /// <summary>
        /// Realiza a bus
        /// </summary>
        /// <param name="channelId"></param>
        /// <param name="searchParans"></param>
        /// <param name="buildSummary"></param>
        /// <returns></returns>
        public ISearchResult Search(byte channelId, SearchParameter[] searchParameters, bool buildSummary)
        {
            StringBuilder words = new StringBuilder();

            foreach (SearchParameter ap in searchParameters)
            {
                words.Append(string.Join(" ", ap.Values)).Append(" ");
            }
            _statisticsManager.IncrementCountWords(words.ToString());
            var channel = _structRepository.GetChannel(channelId);

            if (channel != null)
            {
                string searchString = string.Empty;
                var    result       = new SearchResult();
                result.Scheme   = channel.Scheme;
                result.Elements = _searchManager.SearchInChannel(channel, _dataRepository.GetElements(), searchParameters, _dataRespositoryDictionary, ref searchString);
                if (buildSummary)
                {
                    result.Summary = _summaryManager.BuildSummary(result.Elements, channel, searchString);
                }
                return(result);
            }
            else
            {
                throw new ArgumentException("channelId");
            }
        }