/* * //todo:wanf 分类 及 标签 索引 #region 分类增量索引 * * /// <summary> * /// 为日志添加分类时触发 * /// </summary> * private void AddCategoriesToBlog_BatchAfter(IEnumerable<string> senders, TagEventArgs eventArgs) * { * if (eventArgs.TenantTypeId == TenantTypeIds.Instance().BlogThread()) * { * long blogThreadId = eventArgs.ItemId; * if (journalSearcher == null) * { * journalSearcher = (BlogSearcher)SearcherFactory.GetSearcher(BlogSearcher.CODE); * } * journalSearcher.Update(journalService.Get(blogThreadId)); * } * } * * /// <summary> * /// 删除和更新分类时触发 * /// </summary> * private void DeleteUpdateCategories_Before(Category sender, CommonEventArgs eventArgs) * { * if (sender.TenantTypeId == TenantTypeIds.Instance().BlogThread()) * { * if (eventArgs.EventOperationType == EventOperationType.Instance().Delete() || eventArgs.EventOperationType == EventOperationType.Instance().Update()) * { * IEnumerable<long> blogThreadIds = categoryService.GetItemIds(sender.CategoryId, false); * if (journalSearcher == null) * { * journalSearcher = (BlogSearcher)SearcherFactory.GetSearcher(BlogSearcher.CODE); * } * journalSearcher.Update(journalService.GetBlogThreads(blogThreadIds)); * } * } * } #endregion * #region 标签增量索引 * * /// <summary> * /// 为日志添加标签时触发 * /// </summary> * private void AddTagsToBlog_BatchAfter(IEnumerable<string> senders, TagEventArgs eventArgs) * { * if (eventArgs.TenantTypeId == TenantTypeIds.Instance().BlogThread()) * { * long blogThreadId = eventArgs.ItemId; * if (journalSearcher == null) * { * journalSearcher = (BlogSearcher)SearcherFactory.GetSearcher(BlogSearcher.CODE); * } * journalSearcher.Update(journalService.Get(blogThreadId)); * } * } * /// <summary> * /// 删除和更新标签时触发 * /// </summary> * private void DeleteUpdateTags_Before(Tag sender, CommonEventArgs eventArgs) * { * if (sender.TenantTypeId==TenantTypeIds.Instance().BlogThread()) * { * if (eventArgs.EventOperationType==EventOperationType.Instance().Delete()||eventArgs.EventOperationType==EventOperationType.Instance().Update()) * { * //根据标签获取所有使用该标签的(内容项)日志 * IEnumerable<long> blogThreadIds = tagService.GetItemIds(sender.TagName, null); * if (journalSearcher == null) * { * journalSearcher = (BlogSearcher)SearcherFactory.GetSearcher(BlogSearcher.CODE); * } * journalSearcher.Update(journalService.GetBlogThreads(blogThreadIds)); * } * } * } * private void DeleteItemInTags(ItemInTag sender, CommonEventArgs eventArgs) * { * if (sender.TenantTypeId == TenantTypeIds.Instance().BlogThread()) * { * long barThreadId = sender.ItemId; * if (journalSearcher == null) * { * journalSearcher = (BlogSearcher)SearcherFactory.GetSearcher(BlogSearcher.CODE); * } * journalSearcher.Update(journalService.Get(barThreadId)); * } * } #endregion */ #region 日志增量索引 /// <summary> /// 日志增量索引 /// </summary> private void Journal_After(Journal journal, CommonEventArgs eventArgs) { if (journal == null) { return; } if (journalSearcher == null) { journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); } //添加索引 if (eventArgs.EventOperationType == EventOperationType.Instance().Create()) { journalSearcher.Insert(journal); } //删除索引 if (eventArgs.EventOperationType == EventOperationType.Instance().Delete()) { journalSearcher.Delete(journal.id); } //更新索引 if (eventArgs.EventOperationType == EventOperationType.Instance().Update() || eventArgs.EventOperationType == EventOperationType.Instance().Approved() || eventArgs.EventOperationType == EventOperationType.Instance().Disapproved()) { journalSearcher.Update(journal); } }
/// <summary> /// 日志搜索自动完成 /// </summary> public JsonResult SearchAutoComplete(string keyword, int topNumber) { //调用搜索器进行搜索 JournalSearcher journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); IEnumerable <string> terms = journalSearcher.AutoCompleteSearch(keyword, topNumber); var jsonResult = Json(terms.Select(t => new { tagName = t, tagNameWithHighlight = SearchEngine.Highlight(keyword, string.Join("", t.Take(34)), 100) }), JsonRequestBehavior.AllowGet); return(jsonResult); }
/// <summary> /// 日志全局搜索 /// </summary> public ActionResult _GlobalSearch(JournalFullTextQuery query, int topNumber) { query.PageSize = topNumber;//每页记录数 query.PageIndex = 1; //调用搜索器进行搜索 JournalSearcher journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); PagingDataSet <Journal> journals = journalSearcher.Search(query); return(PartialView(journals)); }
//todo:wanf 分类 及 标签 索引 #region 分类增量索引 /// <summary> /// 为日志添加分类时触发 /// </summary> private void AddCategoriesToBlog_BatchAfter(IEnumerable<string> senders, TagEventArgs eventArgs) { if (eventArgs.TenantTypeId == TenantTypeIds.Instance().Journals()) { long journalId = eventArgs.ItemId; if (journalSearcher == null) { journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); } journalSearcher.Update(journalService.Get(journalId)); } }
/// <summary> /// 为日志添加标签时触发 /// </summary> private void AddTagsToBlog_BatchAfter(IEnumerable <string> senders, TagEventArgs eventArgs) { if (eventArgs.TenantTypeId == TenantTypeIds.Instance().Journals()) { long blogThreadId = eventArgs.ItemId; if (journalSearcher == null) { journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); } journalSearcher.Update(journalService.Get(blogThreadId)); } }
private void DeleteItemInTags(ItemInTag sender, CommonEventArgs eventArgs) { if (sender.TenantTypeId == TenantTypeIds.Instance().Journals()) { long barThreadId = sender.ItemId; if (journalSearcher == null) { journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); } journalSearcher.Update(journalService.Get(barThreadId)); } }
/// <summary> /// 日志快捷搜索 /// </summary> public ActionResult _QuickSearch(JournalFullTextQuery query, int topNumber) { query.PageSize = topNumber;//每页记录数 query.PageIndex = 1; query.Range = JournalSearchRange.SUBJECT; query.Keyword = Server.UrlDecode(query.Keyword); //调用搜索器进行搜索 JournalSearcher journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); PagingDataSet <Journal> journals = journalSearcher.Search(query); return(PartialView(journals)); }
/// <summary> /// 删除和更新分类时触发 /// </summary> private void DeleteUpdateCategories_Before(Category sender, CommonEventArgs eventArgs) { if (sender.TenantTypeId == TenantTypeIds.Instance().Journals()) { if (eventArgs.EventOperationType == EventOperationType.Instance().Delete() || eventArgs.EventOperationType == EventOperationType.Instance().Update()) { IEnumerable <long> blogThreadIds = categoryService.GetItemIds(sender.CategoryId, false); if (journalSearcher == null) { journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); } journalSearcher.Update(journalService.GetJournalsByIds(blogThreadIds)); } } }
/// <summary> /// 删除和更新分类时触发 /// </summary> private void DeleteUpdateCategories_Before(Category sender, CommonEventArgs eventArgs) { if (sender.TenantTypeId == TenantTypeIds.Instance().Journals()) { if (eventArgs.EventOperationType == EventOperationType.Instance().Delete() || eventArgs.EventOperationType == EventOperationType.Instance().Update()) { IEnumerable<long> blogThreadIds = categoryService.GetItemIds(sender.CategoryId, false); if (journalSearcher == null) { journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); } journalSearcher.Update(journalService.GetJournalsByIds(blogThreadIds)); } } }
/// <summary> /// 删除和更新标签时触发 /// </summary> private void DeleteUpdateTags_Before(Tag sender, CommonEventArgs eventArgs) { if (sender.TenantTypeId == TenantTypeIds.Instance().Journals()) { if (eventArgs.EventOperationType == EventOperationType.Instance().Delete() || eventArgs.EventOperationType == EventOperationType.Instance().Update()) { //根据标签获取所有使用该标签的(内容项)日志 IEnumerable <long> journalIds = tagService.GetItemIds(sender.TagName, null); if (journalSearcher == null) { journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); } journalSearcher.Update(journalService.GetJournalsByIds(journalIds)); } } }
/// <summary> /// 日志搜索 /// </summary> public ActionResult Search(JournalFullTextQuery query) { query.Keyword = WebUtility.UrlDecode(query.Keyword); query.PageSize = 10;//每页记录数 //调用搜索器进行搜索 JournalSearcher journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); PagingDataSet <Journal> journals = journalSearcher.Search(query); //添加到用户搜索历史 IUser CurrentUser = UserContext.CurrentUser; if (CurrentUser != null) { if (!string.IsNullOrWhiteSpace(query.Keyword)) { SearchHistoryService searchHistoryService = new SearchHistoryService(); searchHistoryService.SearchTerm(CurrentUser.UserId, JournalSearcher.CODE, query.Keyword); } } //添加到热词 if (!string.IsNullOrWhiteSpace(query.Keyword)) { SearchedTermService searchedTermService = new SearchedTermService(); searchedTermService.SearchTerm(JournalSearcher.CODE, query.Keyword); } //获取站点分类,并设置站点分类的选中项 IEnumerable <Category> siteCategories = categoryService.GetOwnerCategories(0, TenantTypeIds.Instance().Journals()); SelectList siteCategoryList = new SelectList(siteCategories.Select(n => new { text = n.CategoryName, value = n.CategoryId }), "value", "text", query.SiteCategoryId); ViewData["siteCategoryList"] = siteCategoryList; //设置页面Meta if (string.IsNullOrWhiteSpace(query.Keyword)) { pageResourceManager.InsertTitlePart("日志搜索");//设置页面Title } else { pageResourceManager.InsertTitlePart(query.Keyword + "的相关日志");//设置页面Title } return(View(journals)); }
/// <summary> /// 日志增量索引 /// </summary> private void Journal_After(Journal journal, CommonEventArgs eventArgs) { if (journal == null) { return; } if (journalSearcher == null) { journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); } //添加索引 if (eventArgs.EventOperationType == EventOperationType.Instance().Create()) { //if (!journal.IsDraft) //{ journalSearcher.Insert(journal); //} } //删除索引 if (eventArgs.EventOperationType == EventOperationType.Instance().Delete()) { journalSearcher.Delete(journal.id); } //更新索引 if (eventArgs.EventOperationType == EventOperationType.Instance().Update() || eventArgs.EventOperationType == EventOperationType.Instance().Approved() || eventArgs.EventOperationType == EventOperationType.Instance().Disapproved()) { //if (!journal.IsDraft) //{ journalSearcher.Update(journal); //} } }
/// <summary> /// 删除和更新标签时触发 /// </summary> private void DeleteUpdateTags_Before(Tag sender, CommonEventArgs eventArgs) { if (sender.TenantTypeId == TenantTypeIds.Instance().Journals()) { if (eventArgs.EventOperationType==EventOperationType.Instance().Delete()||eventArgs.EventOperationType==EventOperationType.Instance().Update()) { //根据标签获取所有使用该标签的(内容项)日志 IEnumerable<long> journalIds = tagService.GetItemIds(sender.TagName, null); if (journalSearcher == null) { journalSearcher = (JournalSearcher)SearcherFactory.GetSearcher(JournalSearcher.CODE); } journalSearcher.Update(journalService.GetJournalsByIds(journalIds)); } } }