/// <summary> /// 更新索引 /// </summary> /// <param name="questionId"></param> public void SetQuestionFullSearch(int questionId) { try { var selectSql = @"SELECT q.QuestionId,q.Title,q.Question,q.Tags,q.NewAnswer, q.isThematic,q.IsDelete,q.answerCount, q.QuestionTime,q.AnswerId,q.Integration,q.SortId,q.LastAnswerTime,u.Realname, u1.Realname AS answerName, q.LastAnswerUserId FROM Int_Question q LEFT JOIN Sys_Users u ON q.UserId=u.UserId LEFT JOIN sys_users u1 ON q.LastAnswerUserId=u1.UserId WHERE q.QuestionId=" + questionId; FullTextIndexQuestion question = _dataAccess.FetchListBySql <FullTextIndexQuestion>(selectSql).First(); if (question.IsThematic == 1) { return; } if (question.IsDelete == 1) { FullTextSearchProvider.DelIndex <FullTextIndexQuestion>("intquestion", questionId); } else { FullTextSearchProvider.Index(question, "intquestion", questionId, true); } } catch { } }
public ActionResult SearchResource(string kw = "", string orderF = "CreateTime", int dir = 1, int pageIndex = 1, int pageSize = 20, string ext = "") { var must = new Dictionary <string, object>() { { "tenantId", CurrentTenant.TenantId }, { "status", 1 }, { "isDeleted", 0 } }; if (ext.Length != 0) { must["extendNameType"] = ext; } long total; var models = FullTextSearchProvider.Search <KL_Resource>( out total, "knowledge", new[] { "resourceName", "fileContent", "memo", "tags", "levelPath", "createrName" }, kw, (pageIndex - 1) * pageSize, pageSize, "<b>", "</b>", must); return (View(new RetechWing.MvcPager.PagedList <SearchResult <KL_Resource> >( models, pageIndex, pageSize, (int)total))); }
public ActionResult Knowledeg(string kw = "", string order = "CreateTime", int pageIndex = 1, int pageSize = 20, int suffix = 0) { FullSearchService.KeyWordManager.AddWord(kw, CurrentUser.TenantId); var must = new Dictionary <string, object>() { { "status", 1 }, { "isDeleted", 0 } }; if (suffix != 0) { if (_fileExtendIndexs.ContainsKey(suffix)) { var exName = _fileExtendIndexs[suffix]; must.Add("extendGeneralName", exName); } } long total; var models = FullTextSearchProvider.Search <KL_Resource>( out total, "KL_Resource", new[] { "resourceName", "memo", "tags", "fileContent" }, kw, (pageIndex - 1) * pageSize, pageSize, "<em>", "</em>", must); return (View(new RetechWing.MvcPager.PagedList <SearchResult <KL_Resource> >( models, pageIndex, pageSize, (int)total))); }
/// <summary> /// 修改资源 /// </summary> /// <param name="resource"></param> /// <returns></returns> public bool ModifyResource(KL_Resource resource) { var ps = typeof(KL_Resource).GetProperties(); var dict = ps.Where(info => !info.Name.Equals("FileContent")).ToDictionary(info => info.Name.ToFirstCharLower(), info => info.GetValue(resource, null)); FullTextSearchProvider.UpdateIndex <KL_Resource>("knowledge", resource.ResourceId, dict, true); return(_dataAccess.UpdateEntity(resource) > 0); }
internal static void DeleteCourseIndex(int courseId) { try { FullTextSearchProvider.DelIndex <FullTextSearchCourse>("course", courseId); } catch { } }
/// <summary> /// 增加资源的次数 /// </summary> /// <param name="resourceId"></param> /// <param name="type"> /// 类别 /// <para>0:阅读次数</para> /// <para>1:评分次数</para> /// <para>2:评价次数</para> /// <para>3:收藏次数</para> /// <para>4:下载次数</para> /// <para>5:喜欢次数</para> /// </param> /// <param name="doFlag">操作; 0:增;1:减</param> public void AddResourceCount(int[] resourceId, int type, int doFlag = 0) { if (resourceId == null) { return; } if (resourceId.Length == 0) { return; } string setStr = ""; if (type == 0) { setStr = string.Format(" ReadCount = ReadCount {0} 1 ", (doFlag == 0 ? "+" : "-")); } else if (type == 1) { setStr = string.Format(" ScoreCount = ScoreCount {0} 1 ", (doFlag == 0 ? "+" : "-")); } else if (type == 2) { setStr = string.Format(" PingCount = PingCount {0} 1 ", (doFlag == 0 ? "+" : "-")); } else if (type == 3) { setStr = string.Format(" FavoriteCount = FavoriteCount {0} 1 ", (doFlag == 0 ? "+" : "-")); } else if (type == 4) { setStr = string.Format(" LoadTimes = LoadTimes {0} 1 ", (doFlag == 0 ? "+" : "-")); } else if (type == 5) { setStr = string.Format(" LoveCount = LoveCount {0} 1 ", (doFlag == 0 ? "+" : "-")); } if (!string.IsNullOrWhiteSpace(setStr)) { _dataAccess.ExecuteSql(string.Format("Update KL_Resource set LastUpdateTime=GETDATE(), {1} where ResourceId in ({0})", resourceId.GetString(), setStr)); } var ks = _dataAccess.GetList <KL_Resource>("ResourceId IN (" + resourceId.GetString() + ")"); foreach (var k in ks) { FullTextSearchProvider.UpdateIndex <KL_Resource>("knowledge", k.ResourceId, new { readCount = k.ReadCount, scoreCount = k.ScoreCount, pingCount = k.PingCount, favoriteCount = k.FavoriteCount, loadTimes = k.LoadTimes, loveCount = k.LoveCount }, true); } }
internal static void IndexCourse(int courseId) { try { var dataAccess = DataAccessProvider.DataAccess; var course = dataAccess.Get <FullTextSearchCourse>(courseId); FullTextSearchProvider.Index(course, "course", courseId, true); } catch { } }
/// <summary> /// 批量删除资源,返回受影响的行数 /// </summary> /// <param name="ids">资源ids</param> /// <returns></returns> public int DeleteResource(int[] ids) { string sqlwhere = @"update KL_Resource set IsDeleted=1,LastUpdateTime=GETDATE() where ResourceId in (" + ids.GetString() + ")"; foreach (var id in ids) { FullTextSearchProvider.UpdateIndex <KL_Resource>("knowledge", id, new { isDelete = 1 }, true); } return(_dataAccess.ExecuteSql(sqlwhere)); }
/// <summary> /// 保存学员对知识的评价分值 /// </summary> /// <param name="model"></param> public void AddResourceUserScore(KL_ResourceUserScore model) { _dataAccess.AddEntity(model); _dataAccess.ExecuteSql("Update KL_Resource set AvgScore = (select cast(sum(score) as DECIMAL)/count(0) from KL_ResourceUserScore where ResourceId = KL_Resource.ResourceId) where KL_Resource.ResourceId = " + model.ResourceId); //修改全文检索中的索引 var k = _dataAccess.GetList <KL_Resource>("ResourceId=" + model.ResourceId).FirstOrDefault(); FullTextSearchProvider.UpdateIndex <KL_Resource>("knowledge", k.ResourceId, new { avgScore = k.AvgScore }); }
public JsonResult InitCourseSearchIndex() { var list = RetechWing.DataAccess.DataAccessProvider.DataAccess.GetList <FullTextSearchCourse>(); int count = 0; list.ForEach((t, i) => { FullTextSearchProvider.Index(t, "course", t.CourseId, true); count++; }); return(Json(new { result = 1, msg = "初始化完成,共索引" + count + "条记录" }, JsonRequestBehavior.AllowGet)); }
public void IndexKnowledge(int id) { var model = GetModel(id); var filecontent = GetFileContent(model.FileId); if (!string.IsNullOrEmpty(filecontent)) { model.FileContent = filecontent; DeleteFileContent(model.FileId); } FullTextSearchProvider.Index(model, "knowledge", id, true); }
public JsonResult InitTrainSearchIndex() { var list = RetechWing.DataAccess.DataAccessProvider.DataAccess.FetchListBySql <TrainSearchModel>( TrainSearchModel.GetSelectSql()); int count = 0; list.ForEach((t, i) => { FullTextSearchProvider.Index(t, "traininfo", t.TrainId, true); count++; }); return(Json(new { result = 1, msg = "初始化完成,共索引" + count + "条记录" }, JsonRequestBehavior.AllowGet)); }
public int ChangeResourceSort(int resourceId, int newSort) { _dataAccess.UpdateField("KL_Resource", "LastUpdateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "ResourceId=" + resourceId); var result = _dataAccess.UpdateField("KL_Resource", "SortId", newSort.ToString(), "ResourceId=" + resourceId); var sort = _dataAccess.Get <KL_KnowledgeSort>(newSort); FullTextSearchProvider.UpdateIndex <KL_Resource>("knowledge", resourceId, new { sortId = newSort, sortName = sort.SortName, levelPath = sort.LevelPath }, true); return(result); }
public ActionResult CompleteConvert(int fileId, string fileContent) { var id = _resourceManager.GetResourceIdByFileId(fileId); if (id == -1) { //没有保存 _resourceManager.AddFileContent(fileId, fileContent); } if (id > 0) { FullTextSearchProvider.UpdateIndex <KL_Resource>("knowledge", id, new { fileContent }, false); } return(Content("1")); }
/// <summary> /// /// </summary> /// <param name="sortId"></param> /// <param name="resIds"></param> /// <returns></returns> public int ChangeDsgnResourceSort(int sortId, int[] resIds) { _dataAccess.UpdateField("KL_Resource", "LastUpdateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "ResourceId IN(" + resIds.GetString() + ")"); var result = _dataAccess.UpdateField("KL_Resource", "SortId", sortId.ToString(), "ResourceId IN(" + resIds.GetString() + ")"); var sort = _dataAccess.Get <KL_KnowledgeSort>(sortId); foreach (var id in resIds) { FullTextSearchProvider.UpdateIndex <KL_Resource>("knowledge", id, new { sortId, sortName = sort.SortName, levelPath = sort.LevelPath }, true); } return(result); }
/// <summary> /// 批量审批资源 /// </summary> /// <param name="status">1:审批通过。 2 审批拒绝</param> /// <param name="ids">资源ID列表</param> /// <param name="refuseMemo"></param> /// <returns></returns> public bool AuditMultiResource(int status, string ids, string refuseMemo) { string strSql = "UPDATE KL_Resource SET RefuseMemo=@refuseMemo,Status=@status,LastUpdateTime=GETDATE(),AuditTime=@date WHERE ResourceId IN (" + ids + ")"; var param = new { status, refuseMemo, date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; var kids = ids.GetArray(); foreach (var kid in kids) { FullTextSearchProvider.UpdateIndex <KL_Resource>("knowledge", kid, new { refuseMemo, status, auditTime = DateTime.Now }, true); } return(_dataAccess.ExecuteSql(strSql, param) > 0); }
// // GET: /Search/ public ActionResult Course(string kw = "", string order = "courseName", int pageIndex = 1, int pageSize = 20, int dir = 0) { //记录关键字 FullSearchService.KeyWordManager.AddWord(kw, CurrentUser.TenantId); var otherConditions = new Dictionary <string, object>(); long recordCount; var searchResult = FullTextSearchProvider.Search <FullTextSearchCourse>(out recordCount , "course", new[] { "courseName", "outline", "resourceNames", "categoryName" } , kw, (pageIndex - 1) * pageSize , pageSize , "<em>" , "</em>" , otherConditions , dir , order); var list = new PagedList <SearchResult <FullTextSearchCourse> >(searchResult, pageIndex, pageSize, (int)recordCount); return(View(list)); }
public ActionResult Train(string kw = "", string order = "trainName", int pageIndex = 1, int pageSize = 20, int dir = 0) { //记录关键字 FullSearchService.KeyWordManager.AddWord(kw, CurrentUser.TenantId); var otherConditions = new Dictionary <string, object>(); long recordCount; var searchResult = FullTextSearchProvider.Search <Models.TrainSearchModel>(out recordCount , "traininfo", new[] { "trainName", "trainDescription", "details", "crowd" } , kw, (pageIndex - 1) * pageSize , pageSize , "<em>" , "</em>" , otherConditions , dir , order); var list = new PagedList <SearchResult <TrainSearchModel> >(searchResult, pageIndex, pageSize, (int)recordCount); //int total = 0; //var list = _fullSearchManager.SearchTrain(out total//总记录数 // , CurrentTenant.TenantId//租户Id // , kw//关键字 // , (pageIndex - 1) * pageSize//跳过记录数 // , pageSize//保留记录数 // , order//排序字段 // , FullSearch_Train.OrderFields[order]//排序字段类型 // , true//是否倒序排列 // ); //var analysisWords = _fullSearchManager.AnalysisWord(kw); //foreach (var result in list) //{ // var course = (TrTrainingInfo)result.DbEntity; // foreach (var word in analysisWords) // { // course.TrainName = course.TrainName.Replace(word.Key, "<em>" + word.Key + "</em>"); // } //} return(View(list)); }
/// <summary> /// 批量删除 /// </summary> /// <param name="questionIds"></param> /// <returns></returns> public int DeleteQuestions(IEnumerable <int> questionIds) { var sortIds = _dataAccess.FetchListBySql <int>("SELECT SortId FROM Int_Question WHERE QuestionId IN (" + questionIds.GetString() + ")"); var allsorts = BusinessCache.SingleTableCache.Instance.GetCache <QuestionSort>(); var updateCountSql = new StringBuilder(); foreach (var sortId in sortIds) { if (sortId == 0) { continue; } QuestionSort sort = allsorts.First(p => p.SortId == sortId); while (sort.ParentId != 0) { sort = allsorts.First(p => p.SortId == sort.ParentId); } updateCountSql.AppendLine("UPDATE Int_QuestionSort SET QuestionCount=QuestionCount-1 WHERE SortId =" + sort.SortId); } if (updateCountSql.Length > 0) { _dataAccess.ExecuteSql(updateCountSql.ToString()); } //删除索引 foreach (var questionId in questionIds) { FullTextSearchProvider.DelIndex <FullTextIndexQuestion>("intquestion", questionId); } return(_dataAccess.UpdateField("Int_Question", "IsDelete", "1", "QuestionId IN (" + questionIds.GetString() + ")")); }