Esempio n. 1
0
        public IQueryResultItem Search(InputQuery query)
        {
            SuggestionResult finalResult = new SuggestionResult();

            finalResult.SuggestionType = SuggestionType.Baidu;
            Encoding gb2312 = Encoding.GetEncoding("gb2312");
            Encoding utf8   = Encoding.UTF8;

            string url = "http://suggestion.baidu.com/su?wd=" + HttpUtility.UrlEncode(query.Text, gb2312) + "&action=opensearch&ie=gb2312&from=ie8";

            finalResult.SearchUrl = url;

            if (query == null || query.QueryType != SmartMe.Core.Data.InputQueryType.Text || query.Text == null || query.Text == "")
            {
                return(finalResult);
            }

            string html = SmartMe.Web.Crawl.Crawler.Crawl(url, gb2312);

            if (html == null || html == "")
            {
                return(finalResult);
            }

            Regex  p          = new Regex("\\[.+\\]");
            string jsonResult = p.Match(html).Value;

            if (jsonResult == null || jsonResult == string.Empty)
            {
                return(finalResult);
            }
            DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(object));

            object rawResults = jsonSerializer.ReadObject(new MemoryStream(Encoding.Convert(gb2312, utf8, gb2312.GetBytes(jsonResult))));

            if (rawResults != null)
            {
                object[] preResults = rawResults as object[];
                if (preResults != null && preResults.Length == 2)
                {
                    object[] results = preResults[1] as object[];
                    if (results != null && results.Length > 0)
                    {
                        for (int i = 0; i < results.Length; ++i)
                        {
                            SuggestionResult.ResultItem item = new SuggestionResult.ResultItem();
                            string temp = results[i] as string;
                            if (temp != null)
                            {
                                item.Suggestion = temp;
                                //Console.WriteLine( temp );
                                finalResult.Results.Add(item);
                            }
                        }
                    }
                }
            }
            return(finalResult);
        }
Esempio n. 2
0
        public static void Test()
        {
            QueryResultRecordManager manager = new QueryResultRecordManager("data", new TimeSpan(0, 1, 0));

            Pipeline.Pipeline pipeline = new Pipeline.Pipeline();
            pipeline.QueryResultSubscriberManager.AddSubscriber(manager);

            QueryResult        result     = new QueryResult(new InputQuery("Bill Gates"));
            SearchEngineResult resultItem = new SearchEngineResult();

            resultItem.SearchEngineType = SearchEngineType.Google;
            resultItem.SearchUrl        = "http://www.google.com/query.jsp";
            SearchEngineResult.ResultItem item = new SearchEngineResult.ResultItem();
            item.Title       = "ddd";
            item.Url         = "http://www.gfw.com/";
            item.SimilarUrl  = "http://www.g.com/ddd";
            item.CacheUrl    = "http://www.g.com/cache";
            item.Description = "Who cares?";
            resultItem.Results.Add(item);

            SuggestionResult resultItem1 = new SuggestionResult();

            resultItem1.SuggestionType = SuggestionType.Google;
            resultItem1.SearchUrl      = "json";
            SuggestionResult.ResultItem item1 = new SuggestionResult.ResultItem();
            item1.Index      = "1";
            item1.Number     = "2";
            item1.Suggestion = "haha";
            resultItem1.Results.Add(item1);

            result.SearchEngineResultItems.Add(resultItem);
            result.SuggestionResultItems.Add(resultItem1);

            pipeline.OnQueryResultReady(result);

            Thread.Sleep(1000);

            List <QueryResult> resultList = manager.GetResultList(DateTime.Today, DateTime.Today);

            foreach (QueryResult queryResult in resultList)
            {
                Console.WriteLine(queryResult);
            }
            Console.WriteLine("----------------------------------------------");

            manager.RemoveAllResultList();

            resultList = manager.GetResultList(DateTime.Today, DateTime.Today);
            foreach (QueryResult queryResult in resultList)
            {
                Console.WriteLine(queryResult);
            }

            Console.WriteLine("----------------------------------------------");

            result     = new QueryResult(new InputQuery("Bill Gates"));
            resultItem = new SearchEngineResult();
            resultItem.SearchEngineType = SearchEngineType.Google;
            resultItem.SearchUrl        = "http://www.google.com/query.jsp";
            item             = new SearchEngineResult.ResultItem();
            item.Title       = "ddd";
            item.Url         = "http://www.gfw.com/";
            item.SimilarUrl  = "http://www.g.com/ddd";
            item.CacheUrl    = "http://www.g.com/cache";
            item.Description = "Who cares?";
            resultItem.Results.Add(item);

            result.Items.Add(resultItem);

            pipeline.OnQueryResultReady(result);

            Thread.Sleep(1000);

            manager.RemoveResultListFromDate(DateTime.Today);
            resultList = manager.GetResultList(DateTime.Today - new TimeSpan(1, 0, 0, 0), DateTime.Today);
            foreach (QueryResult queryResult in resultList)
            {
                Console.WriteLine(queryResult);
            }

            Console.WriteLine("----------------------------------------------");

            manager.RemoveResultListFromDate(DateTime.Today + new TimeSpan(1, 0, 0, 0));
            resultList = manager.GetResultList(DateTime.Today - new TimeSpan(1, 0, 0, 0), DateTime.Today);
            foreach (QueryResult queryResult in resultList)
            {
                Console.WriteLine(queryResult);
            }

            Console.WriteLine("----------------------------------------------");
        }
Esempio n. 3
0
        public IQueryResultItem Search(InputQuery query)
        {
            SuggestionResult finalResult = new SuggestionResult();

            finalResult.SuggestionType = SuggestionType.Google;
            string url = "http://suggestqueries.google.cn/complete/search?q=" + HttpUtility.UrlEncode(query.Text, Encoding.UTF8);

            finalResult.SearchUrl = url;

            if (query == null || query.QueryType != SmartMe.Core.Data.InputQueryType.Text || query.Text == null || query.Text == "")
            {
                return(finalResult);
            }

            string html = SmartMe.Web.Crawl.Crawler.Crawl(url, Encoding.UTF8);

            if (html == null || html == "")
            {
                return(finalResult);
            }

            Regex  p          = new Regex("\\[.+\\]");
            string jsonResult = p.Match(html).Value;

            if (jsonResult == null || jsonResult == string.Empty)
            {
                return(finalResult);
            }

            DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(object));



            object rawResults = jsonSerializer.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(jsonResult)));



            if (rawResults != null)
            {
                object[] tmpResults = rawResults as object[];
                if (tmpResults != null && tmpResults.Length == 2)
                {
                    object[] results = tmpResults[1] as object[];
                    if (results != null && results.Length > 0)
                    {
                        for (int i = 0; i < results.Length; ++i)
                        {
                            bool success = true;
                            SuggestionResult.ResultItem item = new SuggestionResult.ResultItem();
                            object[] triple = results[i] as object[];
                            if (triple != null && triple.Length == 3)
                            {
                                string temp = triple[0] as string;
                                if (temp != null)
                                {
                                    item.Suggestion = temp;
                                }
                                else
                                {
                                    success = false;
                                }
                                temp = triple[1] as string;
                                if (temp != null)
                                {
                                    item.Number = temp;
                                }
                                else
                                {
                                    success = false;
                                }
                                temp = triple[2] as string;
                                if (temp != null)
                                {
                                    item.Index = temp;
                                }
                                else
                                {
                                    success = false;
                                }
                                if (success)
                                {
                                    finalResult.Results.Add(item);
                                }
                            }
                        }
                    }
                }
            }
            return(finalResult);
        }