public AnsInfo SearchforCache(SearchInfo Searchwords) { AnsInfo ai = new AnsInfo(); Xapian.MSet xm = new Xapian.MSet(); XapianLogic xl = new XapianLogic(); if (Searchwords.filter == 5) //sec, not cache { List <SearchResult> ls = new List <SearchResult>(); uint num = 0; xl.SearchforsecReturn(Searchwords.SearchString, Searchwords.page, Searchwords.filter, Searchwords.filetype, out num, out ls); } else { xl.SearchReturnforSilo(Searchwords.SearchString, Searchwords.filter, Searchwords.filetype, out xm); SearchReturn(xm, Searchwords, out ai); string search = Searchwords.SearchString + "&" + Searchwords.page + "&" + Searchwords.filter + "&" + Searchwords.filetype; cache.Put(search, ai); } return(ai); }
public ActionResult Result(string search, string filter, string page) { TimeSpan ts; List <XapianLogic.SearchResult> XapAns; bool urlflag = false; string searchbackup = search; //角色等级不同 switch (filter) { case null: if (User.IsInRole("Admin") || User.IsInRole("Sec")) { filter = "5"; //管理员和等级不同用户检索就是全部可见的 } else { filter = "0"; //非管理员检索结果不可见等级不同 } break; case "0": if (User.IsInRole("Admin") || User.IsInRole("Sec")) { filter = "5"; //管理员和等级不同用户检索就是全部可见的 } break; case "1": break; case "2": break; case "3": break; case "4": case "5": if (!User.IsInRole("Admin") && !User.IsInRole("Sec")) { log.Warn("用户" + User.Identity.Name + "恶意访问!!"); filter = "0"; } break; default: filter = "0"; break; } //分页 if (page == null) { page = "0"; } ViewBag.Page = page; ViewBag.Filter = filter; if (string.IsNullOrEmpty(search)) { //如果没有词检索就返回 return(RedirectToAction("Index")); } else { if (IsUrl(search)) { urlflag = true; search = Regex.Replace(search, @"/", " "); } //分词处理 ViewBag.SearchWord = searchbackup; XapianLogic xl = new XapianLogic(); uint num = 0; if (urlflag) { xl.SearchReturn(searchbackup, int.Parse(page), int.Parse(filter), "1980/01/01", out num, out XapAns, out ts); } else { //如果是Ftp和共享文件夹的来源,支持用+fileextension:excel、word、ppt、pdf、txt、html,查找过滤 //if ((filter == "2" || filter == "3")&&search.Contains("+fileextension")) if (search.Contains("+fileextension")) { int pos = search.IndexOf("+fileextension"); //若有使用扩展名检索,则筛选扩展名 string extension = search.Substring(pos + 15, search.Length - pos - 15); string searchkeyword = search.Substring(0, pos); xl.SearchReturn(searchkeyword, int.Parse(page), int.Parse(filter), extension, out num, out XapAns, out ts); //带有扩展名检索 } else { xl.SearchReturn(search, int.Parse(page), int.Parse(filter), "0", out num, out XapAns, out ts); //无扩展名检索 } } if (num == 0) { //如果没有检索到结果 ViewBag.ZeroCheck = "0"; TempData["Zero"] = "内容未检索到!"; ViewBag.Ansnum = 0; ViewBag.PageCount = 0; ViewBag.time = ts; return(View()); } else { ViewBag.AnsNum = num; } //检索到则返回结果 ViewBag.WebContent = XapAns; ViewBag.PageCount = (uint)Math.Ceiling(num / 10.0); //检索所用时间 ViewBag.time = ts; return(View()); } }
public int GetUserSubandPush() { //用户Email和邮件内容 string useremail = ""; string mailcontent = ""; //在数据库中读取角色与用户信息 var context = new ApplicationDbContext(); List <ApplicationUser> allUsers = context.Users.ToList(); var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(new ApplicationDbContext())); //获得管理员角色 ICollection <IdentityUserRole> Adminrole = roleManager.FindByName("Admin").Users; //获得等级不同角色 ICollection <IdentityUserRole> Secrole = roleManager.FindByName("Sec").Users; foreach (var item in allUsers) //轮询用户 { int sec = 0; bool flag = false; useremail = item.Email; if (useremail == "*****@*****.**" || item.EmailConfirmed == false) //if (item.EmailConfirmed == false) { continue; } foreach (var rolea in Adminrole) //是否管理员 { var find = string.Compare(rolea.UserId, item.Id); //依次查询 if (find == 0) { sec = 1; //若管理员,则等级不同 flag = true; break; } } if (!flag) { foreach (var rolea in Secrole) //是否等级不同 { var find = string.Compare(rolea.UserId, item.Id); //依次查询 if (find == 0) { sec = 1; //若等级不同,则终止 break; } } } string id = item.Id; UserSubscribe us = new UserSubscribe(); XapianLogic xl = new XapianLogic(); List <UserSubscribe.SubStruct> lus = new List <UserSubscribe.SubStruct>(); string str = CrawlConfigValue + id + @".config"; us.ShowSubXml(str, out lus); //查看该用户是否有订阅 if (lus.Count == 0) { continue; } else { foreach (var word in lus) { string tmp = xl.SearchForPush(word.SearchWord, sec, word.AddTime); //检查数据库内容 if (tmp != null || tmp != "") { mailcontent = mailcontent + tmp; //获取内容更新 } } } us.UpdateSubNodeonlytime(str); //更新订阅查询时间 if (mailcontent == "") //检查是否有内容,无内容不推送 { Console.WriteLine("no update"); continue; } PushFunction.PushFunction ppf = new PushFunction.PushFunction(); ppf.GetInfandPush(useremail, mailcontent); //按照用户邮箱和内容推送 } return(1); }
public async Task <ActionResult> Result(string search, string filter, string page) { if (search == "我想玩旅行商问题的游戏上上下下左右左右BABA") { return(View("Amazing")); } TimeSpan ts; DateTime DateTimestart = DateTime.Now; DateTime DateTimeend; List <SearchResult> XapAns; bool urlflag = false; string searchbackup = search; //角色等级 switch (filter) { case null: if (User.IsInRole("Admin") || User.IsInRole("Sec")) { filter = "0"; //管理员和等级用户检索就是全部可见的 } else { filter = "0"; //非管理员检索结果不可见等级 } break; case "0": if (User.IsInRole("Admin") || User.IsInRole("Sec")) { filter = "0"; //管理员和等级用户检索就是全部可见的 } break; case "1": break; case "2": break; case "3": break; case "4": case "5": if (!User.IsInRole("Admin") && !User.IsInRole("Sec")) { log.Warn("用户" + User.Identity.Name + "恶意访问!!"); filter = "0"; } break; default: filter = "0"; break; } //分页 if (page == null) { page = "0"; } ViewBag.Page = page; ViewBag.Filter = filter; if (string.IsNullOrEmpty(search)) { //如果没有词检索就返回 return(RedirectToAction("Index")); } else { if (IsUrl(search)) { urlflag = true; search = Regex.Replace(search, @"/", " "); } //分词处理 ViewBag.SearchWord = searchbackup; XapianLogic xl = new XapianLogic(); uint num = 0; if (urlflag) { var guid = GetGuid(); var searchgrain = GrainClient.GrainFactory.GetGrain <ISearchGrain>(guid); SearchInfo si = new SearchInfo { SearchString = searchbackup, filter = int.Parse(filter), page = int.Parse(page), filetype = "1980/01/01" }; Console.WriteLine(guid + "\n"); AnsInfo ai = searchgrain.SearchAns(si).Result; Console.WriteLine(guid + "ret" + "\n"); //xl.SearchReturn(searchbackup, int.Parse(page), int.Parse(filter),"1980/01/01", out num, out XapAns, out ts); num = ai.totalnum; XapAns = ai.retinfo; DateTimeend = DateTime.Now; ts = DateTimeend - DateTimestart; ts.TotalMilliseconds.ToString(); //查询时间返回 } else { //如果是Ftp和共享文件夹的来源,支持用+fileextension:excel、word、ppt、pdf、txt、html,查找过滤 //if ((filter == "2" || filter == "3")&&search.Contains("+fileextension")) var guid = GetGuid(); Console.WriteLine(guid + "\n"); //var searchgrain = GrainClient.GrainFactory.GetGrain<ISearchGrain>(guid); Console.WriteLine(guid + "ret" + "\n"); SearchInfo si = new SearchInfo { SearchString = searchbackup, filter = int.Parse(filter), page = int.Parse(page) }; if (search.Contains("+fileextension")) { int pos = search.IndexOf("+fileextension"); //若有使用扩展名检索,则筛选扩展名 string extension = search.Substring(pos + 15, search.Length - pos - 15); string searchkeyword = search.Substring(0, pos); si.filetype = extension; //xl.SearchReturn(searchkeyword, int.Parse(page), int.Parse(filter), extension, out num, out XapAns, out ts); //带有扩展名检索 AnsInfo ai = new AnsInfo(); ai = await SearchAns(si, guid); num = ai.totalnum; XapAns = ai.retinfo; DateTimeend = DateTime.Now; ts = DateTimeend - DateTimestart; ts.TotalMilliseconds.ToString(); //查询时间返回 } else { si.filetype = "0"; AnsInfo ai = new AnsInfo(); ai = await SearchAns(si, guid); //xl.SearchReturn(search, int.Parse(page), int.Parse(filter), "0", out num, out XapAns, out ts); //无扩展名检索 num = ai.totalnum; XapAns = ai.retinfo; DateTimeend = DateTime.Now; ts = DateTimeend - DateTimestart; ts.TotalMilliseconds.ToString(); //查询时间返回 } } if (num == 0) { //如果没有检索到结果 ViewBag.ZeroCheck = "0"; TempData["Zero"] = "内容未检索到!"; ViewBag.Ansnum = 0; ViewBag.PageCount = 0; ViewBag.time = ts; return(View()); } else { ViewBag.AnsNum = num; } //检索到则返回结果 ViewBag.WebContent = XapAns; ViewBag.PageCount = (uint)Math.Ceiling(num / 10.0); //检索所用时间 ViewBag.time = ts; return(View()); } }