コード例 #1
0
        public async Task <ActionResult> TwitterSearchAsync(string query, int maxNumberOfResults, int dataSourceId)
        {
            TwitterAdapter.ConsumerKey    = System.Web.HttpContext.Current.Application["TwitterConsumerKey"].ToString();
            TwitterAdapter.ConsumerSecret = System.Web.HttpContext.Current.Application["TwitterConsumerSecret"].ToString();

            var results = await TwitterAdapter.SearchAsync(query, maxNumberOfResults);

            var json = JsonConvert.SerializeObject(results);

            DEV_DB_LICEntities2 db = new DEV_DB_LICEntities2();

            UserSearch usearch = new UserSearch()
            {
                QueryText = query, DataSourceId = dataSourceId, JsonResult = json, CreatedOn = DateTime.Now
            };

            db.UserSearches.Add(usearch);

            /*var model = new TwitterSearch() { Query = query, ResultsXml = results };*/

            db.SaveChanges();

            db.Database.ExecuteSqlCommand("usp_ImportTweetsBySearchId @param1", new SqlParameter("param1", usearch.Id));

            var resultsList = db.SearchResults.Where(r => r.UserSearchId == usearch.Id);

            List <TweetSentiment> tweetSentiments = new List <TweetSentiment>();

            foreach (var r in resultsList)
            {
                tweetSentiments.Add(new TweetSentiment(r.Id.ToString(), r.TweetText));
            }

            string apiKey = System.Web.HttpContext.Current.Application["CognitiveServicesKey"].ToString();

            var sentimentResults = await SentimentAnalyzer.AnalyzeAsync(tweetSentiments, apiKey);

            foreach (var s in sentimentResults)
            {
                var recordToUpdate = db.SearchResults.SingleOrDefault(r => r.Id.ToString() == s.Id);
                if (recordToUpdate != null)
                {
                    recordToUpdate.Score      = s.Score;
                    recordToUpdate.KeyPhrases = s.KeyPhrases;
                }
            }

            db.SaveChanges();

            return(this.RedirectToAction("Details", "UserSearches", new { id = usearch.Id }));
        }