Example #1
0
 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());
 }
Example #2
0
 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));
 }
Example #3
0
        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));
            }
        }
Example #4
0
 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));
 }
Example #5
0
        public ActionResult Index(AdminSearchQuery model)
        {
            ViewData["results"] = _adminSearchService.Search(model);

            return(View(model));
        }
Example #6
0
 public IPagedList <AdminSearchResult> Search(AdminSearchQuery model)
 {
     return(_universalSearchIndexSearcher.Search(model));
 }