コード例 #1
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));
            }
        }
コード例 #2
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));
            }
        }
コード例 #3
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));
     }
 }
コード例 #4
0
        public override ActionResult Index(string keyword)
        {
            var results = new SearchResultsRepository();

            var usersResults = this.Data.Users.All()
                .Where(u => u.UserName.IndexOf(keyword) >= 0 || u.Name.IndexOf(keyword) >= 0)
                .ProjectTo<UserSearchResultModel>()
                .ToList();
            results.Results.AddRange(usersResults);

            var contestsResults = this.Data.Contests.All()
                .Where(c => c.Title.IndexOf(keyword) >= 0)
                .ProjectTo<ContestSearchResultModel>()
                .ToList();
            results.Results.AddRange(contestsResults);

            var picturesResults = this.Data.Pictures.All()
                .Where(p => p.Title.IndexOf(keyword) >= 0)
                .ProjectTo<PictureSearchResultModel>()
                .ToList();
            results.Results.AddRange(picturesResults);

            this.ViewBag.Keyword = keyword;
            return this.View(results);
        }