Ejemplo n.º 1
0
 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));
     }
 }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }