private List <UniversalSearchItem> GetUniversalSearchItems(AdminSearchQuery searchQuery, TopDocs topDocs, int pageSize, IndexSearcher searcher) { using (MiniProfiler.Current.Step("Get Search Items")) return(topDocs.ScoreDocs.Skip(pageSize * (searchQuery.Page - 1)) .Select(doc => _searchConverter.Convert(searcher.Doc(doc.Doc))) .ToList()); }
private BooleanClause GetDateQuery(AdminSearchQuery searchQuery) { return(new BooleanClause(new TermRangeQuery(UniversalSearchFieldNames.CreatedOn, searchQuery.CreatedOnFrom.HasValue ? DateTools.DateToString(searchQuery.CreatedOnFrom.Value, DateTools.Resolution.SECOND) : null, searchQuery.CreatedOnTo.HasValue ? DateTools.DateToString(searchQuery.CreatedOnTo.Value, DateTools.Resolution.SECOND) : null, searchQuery.CreatedOnFrom.HasValue, searchQuery.CreatedOnTo.HasValue ), Occur.MUST)); }
public IPagedList <AdminSearchResult> Search(AdminSearchQuery searchQuery) { int pageSize = _siteSettings.DefaultPageSize; using (MiniProfiler.Current.Step("Search for results")) { IndexSearcher searcher = _universalSearchIndexManager.GetSearcher(); BooleanQuery query = new BooleanQuery(); if (!string.IsNullOrWhiteSpace(searchQuery.Term)) { query.Add(GetFilterByTerm(searchQuery.Term)); } if (!string.IsNullOrWhiteSpace(searchQuery.Type)) { query.Add(FilterByEntityType(searchQuery.Type)); } if (searchQuery.CreatedOnFrom.HasValue || searchQuery.CreatedOnTo.HasValue) { query.Add(GetDateQuery(searchQuery)); } TopDocs topDocs = GetTopDocs(searchQuery, searcher, query, pageSize); List <UniversalSearchItem> universalSearchItems = GetUniversalSearchItems(searchQuery, topDocs, pageSize, searcher); List <AdminSearchResult> adminSearchResults; using (MiniProfiler.Current.Step("Get Results")) adminSearchResults = universalSearchItems.Select(item => { Type systemType = TypeHelper.GetTypeByName(item.SystemType); SystemEntity entity = _session.Get(systemType, item.Id) as SystemEntity; return(new AdminSearchResult(item, entity)); }).ToList(); return(new StaticPagedList <AdminSearchResult>(adminSearchResults, searchQuery.Page, pageSize, topDocs.TotalHits)); } }
private static TopDocs GetTopDocs(AdminSearchQuery searchQuery, IndexSearcher searcher, BooleanQuery query, int pageSize) { using (MiniProfiler.Current.Step("Get Top Docs")) return(searcher.Search(query, pageSize * searchQuery.Page)); }
public ActionResult Index(AdminSearchQuery model) { ViewData["results"] = _adminSearchService.Search(model); return(View(model)); }
public IPagedList <AdminSearchResult> Search(AdminSearchQuery model) { return(_universalSearchIndexSearcher.Search(model)); }