Esempio n. 1
0
        /// <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 { }
        }
Esempio n. 2
0
        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)));
        }
Esempio n. 3
0
        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)));
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
 internal static void DeleteCourseIndex(int courseId)
 {
     try
     {
         FullTextSearchProvider.DelIndex <FullTextSearchCourse>("course", courseId);
     }
     catch { }
 }
Esempio n. 6
0
        /// <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);
            }
        }
Esempio n. 7
0
 internal static void IndexCourse(int courseId)
 {
     try
     {
         var dataAccess = DataAccessProvider.DataAccess;
         var course     = dataAccess.Get <FullTextSearchCourse>(courseId);
         FullTextSearchProvider.Index(course, "course", courseId, true);
     }
     catch { }
 }
Esempio n. 8
0
        /// <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));
        }
Esempio n. 9
0
        /// <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 });
        }
Esempio n. 10
0
        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));
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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));
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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"));
        }
Esempio n. 15
0
        /// <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);
        }
Esempio n. 16
0
        /// <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);
        }
Esempio n. 17
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));
        }
Esempio n. 18
0
        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));
        }
Esempio n. 19
0
        /// <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() + ")"));
        }