public PagedSearchResult <ISearchResult> Search(ISearchContext searchContext, SiteContext siteContext, bool isCollectionSearch = false) { using (var context = ContentSearchManager.GetIndex(SiteContext.Current.GetIndexName()).CreateSearchContext()) { var paginationOptions = searchContext.PaginationOptions ?? new PaginationOptions(); var query = context.GetQueryable <LuceneSearchResultItem>(); var predicate = _predicateBuilder.Build <LuceneSearchResultItem>(searchContext); var queryable = _filterBuilder.Build(query, searchContext, siteContext, isCollectionSearch); queryable = queryable.Where(predicate); // change this to just result.ContentTags if you do not want hierarchical faceting queryable = queryable.FacetOn(result => result.ContentTagsFacet); queryable = queryable.FacetOn(result => result.AutomatedTags); // sorting var sorter = searchContext.GetSorter(); queryable = sorter.Sort(queryable); // execute query return(_searchResultFactory.ToPagedSearchResult(queryable, paginationOptions)); } }
public PagedSearchResult <ISearchResult> Search(params ID[] ids) { using (_log.WithLogScope(this)) { var pageSize = ids.Count(); using ( var context = ContentSearchManager.GetIndex(SiteContext.Current.GetIndexName()).CreateSearchContext()) { // just get the results back based on the item ids, no predicate, no sorting var queryable = context .GetQueryable <LuceneSearchResultItem>() .AddFilter(GetFilter(ids)); // execute query return(_searchResultFactory.ToPagedSearchResult(queryable, new PaginationOptions(1, pageSize))); } } }