public virtual ISearchResults Search(IQuery query) { using (var context = ContentSearchManager.GetIndex((SitecoreIndexableItem)Context.Item).CreateSearchContext()) { var root = this.Settings.Root; var queryable = context.GetQueryable <SearchResultItem>(); queryable = SetQueryRoot(queryable, root); queryable = this.FilterOnPresentationOnly(queryable); queryable = FilterOnLanguage(queryable); queryable = FilterOnVersion(queryable); if (this.Settings.Templates != null && this.Settings.Templates.Any()) { queryable.Cast <IndexedItem>().Where(this.GetTemplatePredicates(this.Settings.Templates)); } else { queryable = this.FilterOnTemplates(queryable); } queryable = this.AddContentPredicates(queryable, query); queryable = AddFacets(queryable); if (query.IndexOfFirstResult > 0) { queryable = queryable.Skip(query.IndexOfFirstResult); } if (query.NoOfResults > 0) { queryable = queryable.Take(query.NoOfResults); } var results = queryable.GetResults(); return(SearchResultsRepository.Create(results, query)); } }
public virtual ISearchResults FindAll(int skip, int take) { using (var context = ContentSearchManager.GetIndex((SitecoreIndexableItem)Context.Item).CreateSearchContext()) { var root = this.Settings.Root; var queryable = context.GetQueryable <SearchResultItem>(); queryable = SetQueryRoot(queryable, root); queryable = FilterOnLanguage(queryable); queryable = FilterOnVersion(queryable); queryable = queryable.Where(PredicateBuilder.True <SearchResultItem>()); if (this.Settings.Templates != null && this.Settings.Templates.Any()) { queryable = queryable.Cast <IndexedItem>().Where(this.GetTemplatePredicates(this.Settings.Templates)); } if (skip > 0) { queryable = queryable.Skip(skip); } if (take > 0) { queryable = queryable.Take(take); } var results = queryable.GetResults(); return(SearchResultsRepository.Create(results, null)); } }
public virtual ISearchResults Search(IQuery query) { using (var context = ContentSearchManager.GetIndex(this.IndexName).CreateSearchContext()) { var root = this.Settings.Root; var queryable = context.GetQueryable <SearchResultItem>(); queryable = SetQueryRoot(queryable, root); queryable = this.FilterOnPresentationOnly(queryable); queryable = FilterOnLanguage(queryable); queryable = this.FilterOnTemplates(queryable); queryable = this.AddContentPredicates(queryable, query); queryable = AddFacets(queryable); if (query.IndexOfFirstResult > 0) { queryable = queryable.Skip(query.IndexOfFirstResult); } if (query.NoOfResults > 0) { queryable = queryable.Take(query.NoOfResults); } var results = queryable.GetResults(); return(SearchResultsRepository.Create(results, query)); } }