예제 #1
0
        private List <int> ProcessQuery(SearchEngineConfiguration searchEngine, SearchParams searchParams, out bool isFromCache)
        {
            var indexStats = _cacheHelper.Get <List <int> >(searchEngine.Name);

            isFromCache = true;
            if (null == indexStats || !searchParams.AllowReadingFromCache)
            {
                isFromCache = false;

                HttpWebRequest  httpWebRequest  = (HttpWebRequest)WebRequest.Create(string.Format(searchEngine.Url, searchParams.SearchKeyword, searchParams.NumberOfResultsToConsider));
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                StreamReader    streamReader    = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.ASCII);
                string          rawResponse     = streamReader.ReadToEnd();
                var             resultList      = Regex.Split(rawResponse, searchEngine.UniqueResultSplitter).Skip(1).Select((a, i) => new { Index = i + 1, Url = a.Split(new Char[] { ' ', '<' })[0] }).ToList();
                indexStats = resultList.Where(a => a.Url.ToLower().Contains(searchParams.KeywordForOccurenceCount.ToLower())).Select(a => a.Index).ToList();

                _cacheHelper.Add(searchEngine.Name, indexStats);
            }
            return(indexStats);
        }
예제 #2
0
 public ApiClient CreateApiClient(SearchEngineConfiguration searchEngineConfiguration)
 {
     return(new ApiClient(searchEngineConfiguration.Name, searchEngineConfiguration.ApiUrl, searchEngineConfiguration.SearchParam, searchEngineConfiguration.Headers, searchEngineConfiguration.Params));
 }