コード例 #1
0
        public IActionResult UrlExpansion(string url, int?page, string?keys, string?isselected)
        {
            var identity  = (ClaimsIdentity)HttpContext.User.Identity;
            var judgename = identity.Claims.FirstOrDefault(c => c.Type == "name")?.Value;
            var email     = identity.Claims.FirstOrDefault(c => c.Type == "preferred_username")?.Value;
            CategoryMatchField        urlfields      = new CategoryMatchField(UrlJoinHelper.geturlmatchfields(url.ToLower()));
            string                    key            = urlfields.category + ":" + urlfields.matchfield;
            List <RootQueryCandidate> qeResponseData = new List <RootQueryCandidate>();
            string                    check          = Request.Form["check"];

            ViewBag.url = url;
            HashSet <string> Urls = new HashSet <string> {
                url
            };

            var Passages = AzureSearchHelper.getPassagesfromUrls(Urls);

            //List<String> PassageIds = new List<string>();

            ViewBag.Url          = Passages.FirstOrDefault().Url;
            ViewBag.PassageTitle = Passages.FirstOrDefault().HtmlHeadTitle;
            ViewBag.PassageCount = Passages.Count();
            ViewBag.Judgename    = judgename;
            ViewBag.Keys         = keys;

            ViewBag.IsSelected = isselected;
            if (Passages.Count != 0)
            {
                if (isselected == "selected")
                {
                    qeResponseData = _context.getQueryCandidatesByUrl(key).Where(m => m.selectedanswerid != "none").ToList();
                }
                else if (isselected == "none")
                {
                    qeResponseData = _context.getQueryCandidatesByUrl(key).Where(m => m.selectedanswerid == "none").ToList();
                }
                else
                {
                    qeResponseData = _context.getQueryCandidatesByUrl(key);
                }
            }



            if (keys != null && qeResponseData.Count > 0)
            {
                string[] terms = keys.Split("||");
                foreach (var term in terms)
                {
                    qeResponseData = qeResponseData.Where(q => q.pwquery.Contains(term)).ToList();
                }
            }

            foreach (var Passage in Passages)
            {
                Passage.selectedcount = qeResponseData.Where(x => x.selectedanswerid == Passage.PassageId).Count();
                Passage.RootQueries   = string.Join(";", Passage.RootQueries.Split(";").Take(5));
            }
            ViewBag.Passages = Passages;


            //ViewBag.PassageIds = PassageIds;
            var        pageNumber       = page ?? 1; // if no page is specified, default to the first page (1)
            int        pageSize         = 500;       // Get 25 students for each requested page.
            IPagedList onePageOfQueries = qeResponseData.ToPagedList(pageNumber, pageSize);

            ViewBag.page = pageNumber;
            return(View(onePageOfQueries));
        }
コード例 #2
0
        public static async Task <ResponseData> WebResults(WebSearchClient client, string query, int noAlgos)
        {
            ResponseData response = new ResponseData();

            try
            {
                var webData = await client.Web.SearchAsync(query : query);

                if (webData?.WebPages?.Value?.Count > 0)
                {
                    for (int i = 0; i < noAlgos; i++)
                    {
                        var webPagesResult = webData.WebPages.Value[i];

                        if (webPagesResult != null)
                        {
                            UrlData ud = new UrlData();
                            ud.bingData.name       = webPagesResult.Name;
                            ud.bingData.url        = webPagesResult.Url;
                            ud.bingData.snippet    = webPagesResult.Snippet;
                            ud.bingData.displayUrl = webPagesResult.DisplayUrl;

                            ud.allPassages = new List <PassageData>(AzureSearchHelper.getPassagesfromUrls(new HashSet <string>()
                            {
                                ud.bingData.url
                            }));

                            response.allUrlDetails.Add(ud);
                        }
                        else
                        {
                            Console.WriteLine("Didn't find any web pages...");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("Didn't find any web pages...");
                }

                /*
                 * Images
                 * If the search response contains images, the first result's name
                 * and url are printed.
                 */
                //if (webData?.Images?.Value?.Count > 0)
                //{
                //    // find the first image result
                //    var firstImageResult = webData.Images.Value.FirstOrDefault();

                //    if (firstImageResult != null)
                //    {
                //        Console.WriteLine("Image Results # {0}", webData.Images.Value.Count);
                //        Console.WriteLine("First Image result name: {0} ", firstImageResult.Name);
                //        Console.WriteLine("First Image result URL: {0} ", firstImageResult.ContentUrl);
                //    }
                //    else
                //    {
                //        Console.WriteLine("Didn't find any images...");
                //    }
                //}
                //else
                //{
                //    Console.WriteLine("Didn't find any images...");
                //}

                /*
                 * News
                 * If the search response contains news articles, the first result's name
                 * and url are printed.
                 */
                //if (webData?.News?.Value?.Count > 0)
                //{
                //    // find the first news result
                //    var firstNewsResult = webData.News.Value.FirstOrDefault();

                //    if (firstNewsResult != null)
                //    {
                //        Console.WriteLine("\r\nNews Results # {0}", webData.News.Value.Count);
                //        Console.WriteLine("First news result name: {0} ", firstNewsResult.Name);
                //        Console.WriteLine("First news result URL: {0} ", firstNewsResult.Url);
                //    }
                //    else
                //    {
                //        Console.WriteLine("Didn't find any news articles...");
                //    }
                //}
                //else
                //{
                //    Console.WriteLine("Didn't find any news articles...");
                //}

                /*
                 * Videos
                 * If the search response contains videos, the first result's name
                 * and url are printed.
                 */
                //if (webData?.Videos?.Value?.Count > 0)
                //{
                //    // find the first video result
                //    var firstVideoResult = webData.Videos.Value.FirstOrDefault();

                //    if (firstVideoResult != null)
                //    {
                //        Console.WriteLine("\r\nVideo Results # {0}", webData.Videos.Value.Count);
                //        Console.WriteLine("First Video result name: {0} ", firstVideoResult.Name);
                //        Console.WriteLine("First Video result URL: {0} ", firstVideoResult.ContentUrl);
                //    }
                //    else
                //    {
                //        Console.WriteLine("Didn't find any videos...");
                //    }
                //}
                //else
                //{
                //    Console.WriteLine("Didn't find any videos...");
                //}
            }
            catch (Exception ex)
            {
                Console.WriteLine("Encountered exception. " + ex.Message);
            }

            return(response);
        }