/// <summary> /// 资讯增量索引 /// </summary> private void ContentItem_After(ContentItem cms, CommonEventArgs eventArgs) { if (cms == null) { return; } if (cmsSearcher == null) { cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); } //添加索引 if (eventArgs.EventOperationType == EventOperationType.Instance().Create()) { cmsSearcher.Insert(cms); } //删除索引 if (eventArgs.EventOperationType == EventOperationType.Instance().Delete()) { cmsSearcher.Delete(cms.ContentItemId); } //更新索引 if (eventArgs.EventOperationType == EventOperationType.Instance().Update() || eventArgs.EventOperationType == EventOperationType.Instance().Approved() || eventArgs.EventOperationType == EventOperationType.Instance().Disapproved()) { cmsSearcher.Update(cms); } }
/// <summary> /// 资讯搜索自动完成 /// </summary> public JsonResult SearchAutoComplete(string keyword, int topNumber) { //调用搜索器进行搜索 CmsSearcher cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); IEnumerable <string> terms = cmsSearcher.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(CmsFullTextQuery query, int topNumber) { query.PageSize = topNumber;//每页记录数 query.PageIndex = 1; //调用搜索器进行搜索 CmsSearcher cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); PagingDataSet <ContentItem> cmsThreads = cmsSearcher.Search(query); return(PartialView(cmsThreads)); }
/// <summary> /// 为资讯添加标签时触发 /// </summary> private void AddTagsToCms_BatchAfter(IEnumerable<string> senders, TagEventArgs eventArgs) { if (eventArgs.TenantTypeId == TenantTypeIds.Instance().ContentItem()) { long cmsThreadId = eventArgs.ItemId; if (cmsSearcher == null) { cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); } cmsSearcher.Update(contentItemService.Get(cmsThreadId)); } }
private void DeleteItemInTags(ItemInTag sender, CommonEventArgs eventArgs) { if (sender.TenantTypeId == TenantTypeIds.Instance().ContentItem()) { long barThreadId = sender.ItemId; if (cmsSearcher == null) { cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); } cmsSearcher.Update(contentItemService.Get(barThreadId)); } }
/// <summary> /// 为资讯添加标签时触发 /// </summary> private void AddTagsToCms_BatchAfter(IEnumerable <string> senders, TagEventArgs eventArgs) { if (eventArgs.TenantTypeId == TenantTypeIds.Instance().ContentItem()) { long cmsThreadId = eventArgs.ItemId; if (cmsSearcher == null) { cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); } cmsSearcher.Update(contentItemService.Get(cmsThreadId)); } }
/// <summary> /// 资讯快捷搜索 /// </summary> public ActionResult _QuickSearch(CmsFullTextQuery query, int topNumber) { query.PageSize = topNumber;//每页记录数 query.PageIndex = 1; query.Range = CmsSearchRange.TITLE; query.Keyword = Server.UrlDecode(query.Keyword); //调用搜索器进行搜索 CmsSearcher cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); PagingDataSet <ContentItem> cmsThreads = cmsSearcher.Search(query); return(PartialView(cmsThreads)); }
/// <summary> /// 删除和更新标签时触发 /// </summary> private void DeleteUpdateTags_Before(Tag sender, CommonEventArgs eventArgs) { if (sender.TenantTypeId == TenantTypeIds.Instance().ContentItem()) { if (eventArgs.EventOperationType == EventOperationType.Instance().Delete() || eventArgs.EventOperationType == EventOperationType.Instance().Update()) { //根据标签获取所有使用该标签的(内容项)资讯 IEnumerable <long> cmsThreadIds = tagService.GetItemIds(sender.TagName, null); if (cmsSearcher == null) { cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); } cmsSearcher.Update(contentItemService.GetContentItems(cmsThreadIds)); } } }
/// <summary> /// 资讯搜索 /// </summary> public ActionResult Search(CmsFullTextQuery query) { query.Keyword = WebUtility.UrlDecode(query.Keyword); query.PageSize = 20;//每页记录数 //调用搜索器进行搜索 CmsSearcher cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); PagingDataSet <ContentItem> contentItems = cmsSearcher.Search(query); //添加到用户搜索历史 IUser CurrentUser = UserContext.CurrentUser; if (CurrentUser != null) { if (!string.IsNullOrWhiteSpace(query.Keyword)) { SearchHistoryService searchHistoryService = new SearchHistoryService(); searchHistoryService.SearchTerm(CurrentUser.UserId, CmsSearcher.CODE, query.Keyword); } } //添加到热词 if (!string.IsNullOrWhiteSpace(query.Keyword)) { SearchedTermService searchedTermService = new SearchedTermService(); searchedTermService.SearchTerm(CmsSearcher.CODE, query.Keyword); } //设置页面Meta if (string.IsNullOrWhiteSpace(query.Keyword)) { pageResourceManager.InsertTitlePart("资讯搜索");//设置页面Title } else { pageResourceManager.InsertTitlePart(query.Keyword + "的相关资讯");//设置页面Title } return(View(contentItems)); }
/// <summary> /// 删除和更新标签时触发 /// </summary> private void DeleteUpdateTags_Before(Tag sender, CommonEventArgs eventArgs) { if (sender.TenantTypeId == TenantTypeIds.Instance().ContentItem()) { if (eventArgs.EventOperationType == EventOperationType.Instance().Delete() || eventArgs.EventOperationType == EventOperationType.Instance().Update()) { //根据标签获取所有使用该标签的(内容项)资讯 IEnumerable<long> cmsThreadIds = tagService.GetItemIds(sender.TagName, null); if (cmsSearcher == null) { cmsSearcher = (CmsSearcher)SearcherFactory.GetSearcher(CmsSearcher.CODE); } cmsSearcher.Update(contentItemService.GetContentItems(cmsThreadIds)); } } }