public List <ArticleEntity> GetList(SearchArticle search) { string storeName = "FE_News_GetList"; List <ArticleEntity> lstObject = new List <ArticleEntity>(); try { using (IDbContext context = Context()) { lstObject = context.StoredProcedure(storeName) .Parameter("CateId", search.CateId, DataTypes.Int32) .Parameter("Keyword", search.TextSearch, DataTypes.String) .Parameter("OrderBy", search.OrderBy, DataTypes.Int32) .Parameter("PageIndex", search.PageIndex, DataTypes.Int32) .Parameter("PageSize", search.PageSize, DataTypes.Int32) .QueryMany <ArticleEntity>(); } } catch (Exception ex) { throw new Exception(string.Format("{0} => {1}", storeName, ex)); } return(lstObject); }
public async Task <IEnumerable <ArticleDTO> > SearchAsync(SearchArticle searchParams) { var liste = await _repo.SearchAsync(searchParams); var rtn = MapArticleDTO.MapDataToDTO(liste); return(rtn); }
public string SearchAndPaging(string strQuery, string index) { string result = string.Empty; try { List <SearchArticle> searchArticleList = new List <SearchArticle>(); PSCPortal.CMS.ArticleCollection ArticleList = ArticleCollection.GetArticleCollectionPublish(); string nameSub = Libs.Ultility.GetSubDomain() == string.Empty ? "HomePage" : Libs.Ultility.GetSubDomain(); SubDomain subDomain = PSCPortal.Engine.SubDomain.GetSubByName(nameSub); PageCollection pagesBelongTo = subDomain.GetPagesBelongTo(); string strId = string.Empty; foreach (var page in pagesBelongTo) { foreach (var ar in ArticleList.Where(ar => ar.PageId == page.Id)) { strId += ar.Id + " OR "; } if (strId.Length > 0) { strId = strId.Remove(strId.Length - 3, 3); } } int pageIndex = Int32.Parse(index); string strSearch = " ArticleDetail:(" + strQuery + ") AND ArticleId:" + "( " + strId + " )"; Lucene.Net.Index.IndexReader reader = Lucene.Net.Index.IndexReader.Open(Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["IndexingArticle"])); Lucene.Net.QueryParsers.QueryParser parser = new Lucene.Net.QueryParsers.QueryParser("ArticleDetail", new Lucene.Net.Analysis.Standard.StandardAnalyzer()); Lucene.Net.Search.Query query = parser.Parse(strSearch); Lucene.Net.Search.IndexSearcher searcher = new Lucene.Net.Search.IndexSearcher(reader); Lucene.Net.Search.Hits hits = searcher.Search(query); Lucene.Net.Highlight.QueryScorer score = new Lucene.Net.Highlight.QueryScorer(query); Lucene.Net.Highlight.SimpleHTMLFormatter formater = new Lucene.Net.Highlight.SimpleHTMLFormatter("<span class='Highlight'>", "</span>"); Lucene.Net.Highlight.Highlighter highlighter = new Lucene.Net.Highlight.Highlighter(formater, score); result += hits.Length() + "_" + "<div class='blog_news'><div class='topic_news_title1'><div class='topic_news_title'><a href='#'>Kết quả tìm thấy: " + hits.Length() + "</a></div></div>"; result += "<div class='ct_topic_l'><div class='ct_topic_r1'>"; for (int i = pageIndex * 20 - 20; i < pageIndex * 20 && i < hits.Length(); i++) { string detail = hits.Doc(i).Get("ArticleDetail"); Lucene.Net.Analysis.TokenStream ts = (new Lucene.Net.Analysis.Standard.StandardAnalyzer()).TokenStream("ArticleDetail", new System.IO.StringReader(detail)); SearchArticle searchArticle = new SearchArticle(); searchArticle.Id = hits.Doc(i).Get("ArticleId");; searchArticle.Title = hits.Doc(i).Get("ArticleTitle"); searchArticle.Highligth = highlighter.GetBestFragment(ts, detail); searchArticleList.Add(searchArticle); } reader.Close(); JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary <string, object> resultDic = new Dictionary <string, object>(); resultDic["Count"] = hits.Length(); resultDic["Data"] = searchArticleList; result = serializer.Serialize(resultDic); } catch (Exception e) { } return(result); }
public ResultSet SearchAllArticles(string terms, string type, int page, string lang) { ResultSet results = new ResultSet(); SetContextLanguage(lang); int blurbLimit = 150; // TODO: move to constant SearchResultsItem item = Sitecore.Context.Database.GetItem(Constants.Pages.SearchResults); if (item != null && !string.IsNullOrEmpty(item.SearchResultSummaryCharacterLimit.Raw)) { blurbLimit = item.SearchResultSummaryCharacterLimit.Integer; } int totalResults = 0; List <Article> articles = SearchHelper.PerformArticleSearch(terms, type, page, out totalResults); List <SearchArticle> searchArticles = new List <SearchArticle>(); foreach (Article article in articles) { DefaultArticlePageItem articleItem = article.GetItem(); if (articleItem == null) { continue; } // Handle cases such as invalid link format exception try { var sa = new SearchArticle { Title = Common.Helpers.TextHelper.HighlightSearchTitle(terms, HttpUtility.HtmlDecode(articleItem.ContentPage.PageTitle.Rendered)), Url = articleItem.GetUrl(), Thumbnail = articleItem.GetArticleThumbnailUrl(230, 129), Blurb = articleItem.GetSearchResultBlurb(blurbLimit), Type = articleItem.GetArticleType() }; searchArticles.Add(sa); } catch (Exception ex) { Sitecore.Diagnostics.Log.Error("Error populating search result", ex, this); } } results.Articles = searchArticles; results.TotalMatches = totalResults; results.HasMoreResults = HasMoreResults(page, Constants.SEARCH_RESULTS_ENTRIES_PER_PAGE, results.Articles.Count(), totalResults); return(results); }
public List <ArticleModel> GetList(SearchArticle search) { List <ArticleModel> lstObject = new List <ArticleModel>(); try { lstObject = Execute(() => GetListNoCache(search), "ArticleBo:GetList", Const.MediumCacheTime, true, search); } catch (Exception ex) { Logger.WriteLog(Logger.LogType.Error, ex.ToString()); } return(lstObject); }
public int GetListCount(SearchArticle search) { int totalCount = 0; try { totalCount = Execute(() => _articleDal.GetListCount(search), "ArticleBo:GetListCount", Const.MediumCacheTime, true, search); } catch (Exception ex) { Logger.WriteLog(Logger.LogType.Error, ex.ToString()); } return(totalCount); }
public string ParserArticleUrl(string urlAlias, ref SearchArticle searchInfo) { string trueAlias = string.Empty; urlAlias = string.Concat(urlAlias, "-"); #region Category int cateId = 0; if (!string.IsNullOrEmpty(urlAlias) && urlAlias.StartsWith("tin-tuc")) { urlAlias = urlAlias.Replace("tin-tuc-", string.Empty); trueAlias = "tin-tuc"; } else if (!string.IsNullOrEmpty(urlAlias)) { List <CategoryEntity> lstCateDesc = _categoryBo.GetListDesc(); foreach (var item in lstCateDesc) { if (urlAlias.StartsWith(item.DisplayUrl + "-")) { searchInfo.CateId = cateId = item.CatalogID; urlAlias = StringUtils.SubStringAlias(urlAlias, item.DisplayUrl); trueAlias = string.Concat(trueAlias, item.DisplayUrl); break; } } } if (cateId == 0) { trueAlias = "tin-tuc"; } #endregion if (!string.IsNullOrEmpty(searchInfo.TextSearch)) { trueAlias = string.Format("{0}/k={1}", trueAlias, searchInfo.TextSearch); } if (searchInfo.PageIndex > 1) { trueAlias = string.Format("{0}/p{1}", trueAlias, searchInfo.PageIndex); } return(string.Concat("/", trueAlias)); }
public async Task <List <Article> > SearchAsync(SearchArticle searchParams, CancellationToken ct = default) { List <Article> retour = await _context.Article //.Include(v => v.Vehicule) //.Include(c => c.Conducteur) //.Include(s => s.StatutAmende) //.Include(t => t.TypeAmende) //.Where(x => (searchParams.VehiculeId == null ? 1 == 1 : x.VehiculeId == searchParams.VehiculeId)) //.Where(x => (searchParams.ConducteurId == null ? 1 == 1 : x.ConducteurId == searchParams.ConducteurId)) //.Where(x => (searchParams.TypeAmendeId == null ? 1 == 1 : x.TypeAmendeId == searchParams.TypeAmendeId)) //.Where(x => (searchParams.StatutAmendeId == null ? 1 == 1 : x.StatutAmendeId == searchParams.StatutAmendeId)) //.Where(x => (string.IsNullOrEmpty(searchParams.NumeroAmende) ? 1 == 1 : x.NumeroAmende.Contains(searchParams.NumeroAmende))) .Where(x => !x.IsDeleted) .OrderByDescending(on => on.DateCreation) .ToListAsync(); return(retour); }
public int GetListCount(SearchArticle search) { string storeName = "FE_News_GetList_Count"; try { using (var context = Context()) { return(context.StoredProcedure("FE_News_GetList_Count") .Parameter("CateId", search.CateId, DataTypes.Int32) .Parameter("Keyword", search.TextSearch, DataTypes.String) .QuerySingle <int>()); } } catch (Exception ex) { throw new Exception(string.Format("{0} => {1}", storeName, ex)); } }
public async Task <ActionResult <ArticlesModel> > Search([FromQuery] SearchArticle searchParams) { ArticlesModel retour = new ArticlesModel(); IEnumerable <ArticleDTO> resultat = await _logic.SearchAsync(searchParams); retour.TotalCount = resultat.ToList().Count; resultat = resultat .Skip(searchParams.PageIndex * searchParams.PageSize) .Take(searchParams.PageSize) .ToList(); retour.Items = resultat; if (resultat == null) { logItem.Message += "Search Pas trouvé " + searchParams.ToString(); loggingService.WriteError(logItem); return(StatusCode(StatusCodes.Status404NotFound)); } return(retour); }
public MetaModel BuildMetaArticle(SearchArticle searchInfo) { MetaModel metaTag = new MetaModel() { TitlePage = Const.MetaNewsTitle, MetaTitle = Const.MetaNewsTitle, MetaDescription = Const.MetaNewsDescription, MetaKeyword = Const.MetaNewsKeyword }; if (!string.IsNullOrEmpty(searchInfo.TextSearch)) { metaTag.TitlePage = string.Format("Tìm kiếm {0}", searchInfo.TextSearch); metaTag.MetaTitle = string.Format("Tìm kiếm {0}", searchInfo.TextSearch); metaTag.MetaDescription = string.Format("Tìm kiếm {0}", searchInfo.TextSearch); } else if (searchInfo.CateId > 0) { CategoryEntity cateInfo = _categoryBo.GetByCateId(searchInfo.CateId); if (cateInfo != null && cateInfo.CatalogID > 0) { metaTag.TitlePage = cateInfo.Name; metaTag.MetaTitle = cateInfo.Name; metaTag.MetaDescription = cateInfo.Name; } } if (searchInfo.PageIndex > 1) { metaTag.TitlePage = string.Concat(metaTag.TitlePage, " - trang " + searchInfo.PageIndex); if (!string.IsNullOrEmpty(Const.PrefixTitle)) { metaTag.TitlePage = string.Concat(metaTag.TitlePage, " - ", Const.PrefixTitle); } } return(metaTag); }
public List <ArticleModel> GetListNoCache(SearchArticle search) { List <ArticleModel> lstModel = new List <ArticleModel>(); List <ArticleEntity> lstArticle = _articleDal.GetList(search); if (lstArticle != null && lstArticle.Count > 0) { //lstModel = lstArticle.Select(x => new ArticleModel(x)).ToList(); CategoryEntity category = new CategoryEntity(); foreach (ArticleEntity item in lstArticle) { //category = _categoryBo.GetByCateId(item.CategoryID); //if (category != null && category.CatalogID > 0) //{ // ArticleModel articleModel = new ArticleModel(item); // lstModel.Add(articleModel); //} ArticleModel articleModel = new ArticleModel(item); lstModel.Add(articleModel); } } return(lstModel); }
public ActionResult Index(string name) { var articles = string.IsNullOrEmpty(name)? _getArticle.GetAllArticles : db.Articles.Where(p => p.Name.Contains(name)).ToList(); foreach (var item in articles) { item.Image = db.Pictures.FirstOrDefault(x => x.PictureName == item.ImageName); item.Blocks = db.BlocksInfo.Where(x => x.ArticleId == item.Id).ToList(); foreach (var block in item.Blocks) { block.ArticleName = item.Name; } } User user = dbUsers.Users.ToList().FirstOrDefault(g => g.UserName == User.Identity.Name); SearchArticle dataArticles = new SearchArticle(); dataArticles.Articles = articles; dataArticles.User = user; db.SaveChanges(); return(View(dataArticles)); }
public ActionResult Index(string alias, string textSearch, int pageIndex = 1) { int cateId = 0; if (!string.IsNullOrEmpty(textSearch)) { textSearch = textSearch.Replace('-', ' '); textSearch = StringUtils.UnicodeToUnsignChar(textSearch); } SearchArticle searchInfo = new SearchArticle() { CateId = cateId, TextSearch = textSearch, OrderBy = CookieManager.Instance.Get <int>(Const.ArrangeArticle).ToInt(0), PageIndex = pageIndex, PageSize = Const.PageSizeArticle }; #region Redirect Permanent 301 string standardUrl = _buildLinkBo.ParserArticleUrl(alias, ref searchInfo); string url301 = standardUrl; string currentUrl = Request.RawUrl; if (currentUrl.Contains("?utm_source")) { string strUtm = currentUrl.Substring(currentUrl.IndexOf("?utm_source"), currentUrl.Length - currentUrl.IndexOf("?utm_source")); url301 = string.Concat(url301, strUtm); } if (!currentUrl.Equals(url301)) { return(Redirect301(url301)); } #endregion ArticleListModel model = new ArticleListModel(); int totalRows = _articleBo.GetListCount(searchInfo); if (totalRows > 0) { model.ArticleList = _articleBo.GetList(searchInfo); #region paging Pagings pageModel = new Pagings { PageIndex = pageIndex, Count = totalRows, LinkSite = Utils.GetCurrentURL(standardUrl, pageIndex), PageSize = Const.PageSizeArticle }; model.PagingInfo = pageModel; ViewBag.MetaPagination = SEO.MetaPagination(pageModel.Count, pageIndex, pageModel.PageSize, pageModel.LinkSite); #endregion } if (pageIndex > 1 && totalRows > 0 && (model.ArticleList == null || model.ArticleList.Count == 0)) { return(Redirect(model.PagingInfo.LinkSite)); } model.SearchInfo = searchInfo; #region Meta MetaModel metaTag = _buildLinkBo.BuildMetaArticle(searchInfo); string metaTags = SEO.Instance.BindingMeta(standardUrl, metaTag.MetaTitle, metaTag.MetaDescription, metaTag.MetaKeyword); model.TitlePage = metaTag.TitlePage; ViewBag.MetaTitle = metaTag.MetaTitle; ViewBag.Meta = metaTags; #endregion return(View(model)); }