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)));
                }
            }
        }