示例#1
0
        protected void btnSearch_Click(object sender, EventArgs e)
        {
            using (var context = ContentSearchManager.GetIndex("azure-sitecore-web-index").CreateSearchContext())
            {
                var queryable = context.GetQueryable <AzureSearchResultItem>();
                queryable = queryable.Where(s => s.Content.Contains(txtSearchTerm.Text));
                queryable = queryable.Where(l => l.Language == "en");
                queryable = queryable.OrderBy(o => o.Name);
                var results = queryable.GetResults();
                lblAzureCount.Text = results.TotalSearchResults.ToString();

                gvAzureResults.DataSource = results.Hits.Select(d => d.Document);
                gvAzureResults.DataBind();
            }

            using (var context = ContentSearchManager.GetIndex("sitecore_test_web_index").CreateSearchContext())
            {
                var queryable = context.GetQueryable <SearchResultItem>();
                queryable = queryable.Where(s => s.Content.Contains(txtSearchTerm.Text));
                queryable = queryable.Where(l => l.Language == "en");
                queryable = queryable.OrderBy(o => o.Name);
                var results = queryable.GetResults();
                lblLuceneCount.Text = results.TotalSearchResults.ToString();

                gvLuceneResults.DataSource = results.Hits.Select(d => d.Document);
                gvLuceneResults.DataBind();
            }
        }
        /// <summary>
        /// Gets the system message.
        /// </summary>
        /// <param name="messageKey">The message key.</param>
        /// <returns>A system message based on the key</returns>
        public static string GetSystemMessage(string messageKey)
        {
            string indexName        = string.Format(CultureInfo.InvariantCulture, IndexNameFormat, Context.Database.Name);
            string contentStartPath = CurrentStorefront.GlobalItem.Axes.GetItem(string.Concat(StorefrontConstants.KnowItemNames.Lookups, "/", StorefrontConstants.KnowItemNames.SystemMessages)).Paths.Path;
            var    searchIndex      = ContentSearchManager.GetIndex(indexName);

            using (var context = searchIndex.CreateSearchContext())
            {
                var searchResults = context.GetQueryable <SearchResultItem>();
                searchResults = searchResults.Where(item => item.Path.StartsWith(contentStartPath));
                searchResults = searchResults.Where(item => item.Language == SearchNavigation.CurrentLanguageName);
                searchResults = searchResults.Where(item => item.Name == messageKey);

                var results  = searchResults.GetResults();
                var response = SearchResponse.CreateFromSearchResultsItems(new CommerceSearchOptions(), results);

                if (response.ResponseItems == null || response.TotalItemCount == 0)
                {
                    return(string.Empty);
                }

                var resultItem = response.ResponseItems.FirstOrDefault();
                if (resultItem == null)
                {
                    return(string.Empty);
                }

                var value = resultItem.Fields[StorefrontConstants.KnownFieldNames.Value];
                return(value == null ? string.Empty : value.Value);
            }
        }
        /// <summary>
        /// Preliminary render action invoked before RenderContent <see cref="RenderContent"/>.
        /// </summary>
        /// <summary>
        /// Renders the content.
        /// </summary>
        /// <param name="printContext">The print context.</param>
        /// <param name="output">The output.</param>
        protected override void RenderContent(Sitecore.PrintStudio.PublishingEngine.PrintContext printContext, System.Xml.Linq.XElement output)
        {
            if (!string.IsNullOrEmpty(this.ChildDataKeyName))
            {
                printContext.Settings.Parameters[this.ChildDataKeyName] = this.DataSource;
            }

            if (!string.IsNullOrEmpty(this.RenderingItem["Search Query"]))
            {
                string searches = this.RenderingItem["Search Query"];
                using (var context = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
                {
                    var items = LinqHelper.CreateQuery(context, SearchStringModel.ParseDatasourceString(searches))
                                .Select(toItem => toItem.GetItem());

                    //This gives us our IQueryable

                    foreach (var item in items)
                    {
                        this.DataSource = item.ID.ToString();
                        if (!string.IsNullOrEmpty(this.ChildDataKeyName))
                        {
                            printContext.Settings.Parameters[this.ChildDataKeyName] = item.ID.ToString();
                        }
                        Logger.LogMessage("Found item: " + item.Name);
                        RenderChildren(printContext, output);
                    }
                }
            }
        }
示例#4
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));
     }
 }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            List <SearchResult> results = new List <SearchResult>();
            if (!string.IsNullOrEmpty(Request["relatedto"]))
            {
                string indexName    = string.Format("sitecore_{0}_index", Sitecore.Context.Database.Name);
                var    index        = (LuceneIndex)ContentSearchManager.GetIndex(indexName);
                var    reader       = index.CreateReader(LuceneIndexAccess.ReadOnly);
                var    moreLikeThis = new MoreLikeThis(reader);
                CreateMLTQuery(moreLikeThis);

                string itemId   = Request["relatedto"];
                var    searcher = (IndexSearcher)index.CreateSearcher(LuceneIndexAccess.ReadOnly);
                int    docId    = GetDocumentId(itemId, searcher);

                int minimumNumberShouldMatch = 5;

                results = ShowSimilarResults(searcher, moreLikeThis, docId, minimumNumberShouldMatch);

                // OR using MoreLikeThisQuery
                // string description = SelectedItem["Description"];
                // results = ShowSimilarResultsUsingMLTQuery(searcher, description, new string[] { "title", "description" }, MinimumNumberShouldMatch);
            }
            if (!string.IsNullOrEmpty(Request["query"]))
            {
                results = SearchResults(Request["query"]);
            }

            repeaterResults.DataSource = results;
            repeaterResults.DataBind();
        }
    }
        public void RemoveItem(Item parent, object importRow, string itemName)
        {
            using (new LanguageSwitcher(ImportToLanguage))
            {
                //get the parent in the specific language
                parent = SitecoreDB.GetItem(parent.ID);

                Item item = null;
                //search for the child by name
                if (string.IsNullOrEmpty(SearchIndex))
                {
                    item = parent.Axes.GetDescendants().FirstOrDefault(x => x.Name == itemName);
                }
                else
                {
                    var index = ContentSearchManager.GetIndex(SearchIndex);
                    using (var context = index.CreateSearchContext())
                    {
                        var query =
                            context.GetQueryable <SearchResultItem>().Where(m => m.Name == itemName);
                        if (query.Any())
                        {
                            item = SitecoreDB.GetItem(query.First().ItemId);
                        }
                    }
                }
                if (item != null)
                {
                    item.Recycle();
                }
            }
        }
示例#7
0
        public virtual void RunSync()
        {
            if (!SpeedyGenerationSettings.ShouldGenerateViaScheduledTask())
            {
                return;
            }

            if (!SpeedyGenerationSettings.IsPublicFacingEnvironment())
            {
                return;
            }

            var criticalCSSRepository = ServiceLocator.ServiceProvider.GetService <ICriticalCSSRepository>();

            using (var context = ContentSearchManager.GetIndex(GlobalSettings.Index.Master).CreateSearchContext())
            {
                foreach (var result in GetSpeedyPagesByTemplate(context.Index))
                {
                    if (result.IsSpeedyEnabledForPage() && result.IsCriticalStylesEnabledAndPossible())
                    {
                        criticalCSSRepository.UpdateCriticalCSS(result, GlobalSettings.Database.Master);
                    }
                }
            }
        }
示例#8
0
        public static Item GetDatasourceItem(string pathData, string itemName)
        {
            if (string.IsNullOrWhiteSpace(pathData))
            {
                return(null);
            }

            Item itemData = Sitecore.Context.Database.GetItem(pathData);
            bool isBucket = itemData == null ? false : itemData.IsABucket();

            var searchName = isBucket ? StringUtil.EnsurePrefix('/', itemName) : itemName;

            searchName = searchName.ToLowerInvariant();
            pathData   = pathData.ToLowerInvariant();

            var indexName     = GetIndexName(Context.Item);
            var searchContext = ContentSearchManager.GetIndex(indexName).CreateSearchContext();

            var results = searchContext.GetQueryable <SearchResultItem>().Where(x =>
                                                                                x.Path.StartsWith(StringUtil.EnsurePostfix('/', pathData), StringComparison.OrdinalIgnoreCase) &&
                                                                                x.Path.EndsWith(searchName, StringComparison.OrdinalIgnoreCase) &&
                                                                                x.Language == Context.Item.Language.Name);


            if (isBucket)
            {
                // Dot not return non-bucketable items, like underlying contentblocks.
                results = results.Where(c => c["__bucketable"] == "1");
            }

            return(results.FirstOrDefault()?.GetItem());
        }
        public ActionResult GetShowsForToday()
        {
            var list        = new List <PlanEvent>();
            var sc          = new SitecoreContext();
            var itemBuckets = Sitecore.Configuration.Factory.GetDatabase("master").GetItem("/sitecore/content/EPG/Sections/PlanBuckets/AsiaPlan/");

            if (itemBuckets != null && BucketManager.IsBucket(itemBuckets))
            {
                using (var searchContext = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
                {
                    var result = searchContext.GetQueryable <SearchResultItem>().Where(x => x.Path.Contains("Sections/PlanBuckets/AsiaPlan/") && x.TemplateId == new ID("{50B06575-9906-4B50-8E63-3E8BBEF1F858}"));
                    if (result != null)
                    {
                        foreach (var item in result)
                        {
                            list.Add(sc.Cast <PlanEvent>(item.GetItem()));
                        }
                    }
                }
            }

            if (list.Count > 0)
            {
                string today = DateTime.Now.ToString("dd/MM/yyyy");//9/1/2015"
                //  today = "01/12/2017";
                //get shows after today 12:00 AM
                IEnumerable <PlanEvent> elist = list.Where(x => DateTime.ParseExact(x.BroadcastDate, "dd/MM/yyyy", null).CompareTo(DateTime.ParseExact(today, "dd/MM/yyyy", null)) > 0);
                list = new List <PlanEvent>(elist);
                //sort them in ascending
                list.Sort((date1, date2) => DateTime.ParseExact(date1.BroadcastDate + " " + date1.PlanTime, "dd/MM/yyyy HH:mm", null).CompareTo(DateTime.ParseExact(date2.BroadcastDate + " " + date2.PlanTime, "dd/MM/yyyy HH:mm", null)));
                int a = list.Count;
            }
            return(View(list));
        }
示例#10
0
 public static IEnumerable <BlogPost> GetBlogPostsMK([NotNull] Item blogRoot, int startRowIndex, int maximumRows, bool descending)
 {
     try
     {
         ISearchIndex index = ContentSearchManager.GetIndex(new SitecoreIndexableItem(blogRoot));
         using (IProviderSearchContext context = index.CreateSearchContext())
         {
             Expression <Func <SearchResultItem, bool> > predicate = GetBlogItemsQueryPredicate(blogRoot);
             if (descending)
             {
                 //.Slice(startRowIndex, maximumRows)
                 return(context.GetQueryable <SearchResultItem>().Where(predicate)
                        .OrderByDescending(result => result["TODO REPLACE THIS WITH THE PUBLISH DATE FIELD THAT LUCENE HAS"])
                        .CreateAs <BlogPost>());
             }
             else
             {
                 return(context.GetQueryable <SearchResultItem>().Where(predicate)
                        .OrderBy(result => result["TODO REPLACE THIS WITH THE PUBLISH DATE FIELD THAT LUCENE HAS"])
                        .CreateAs <BlogPost>());
             }
         }
     }
     catch (Exception ex)
     {
         Log.Error("XBlog GetBlogPosts error", ex, new object());
     }
     return(Enumerable.Empty <BlogPost>());
 }
示例#11
0
        /// <summary>
        /// Searches for site content items based on keyword
        /// </summary>
        /// <param name="keyword">The keyword to search for.</param>
        /// <param name="searchOptions">The paging options for this query</param>
        /// <returns>
        /// A list of child products
        /// </returns>
        public static SearchResponse SearchSiteByKeyword(string keyword, CommerceSearchOptions searchOptions)
        {
            const string IndexNameFormat = "sitecore_{0}_index";
            string       indexName       = string.Format(
                System.Globalization.CultureInfo.InvariantCulture,
                IndexNameFormat,
                Sitecore.Context.Database.Name);

            var searchIndex = ContentSearchManager.GetIndex(indexName);

            using (var context = searchIndex.CreateSearchContext())
            {
                //var rootSearchPath = Sitecore.IO.FileUtil.MakePath(Sitecore.Context.Site.ContentStartPath, "Home", '/');
                var searchResults = context.GetQueryable <SearchResultItem>();
                searchResults = searchResults.Where(item => item.Path.StartsWith(Sitecore.Context.Site.ContentStartPath));
                searchResults = searchResults.Where(item => item[StorefrontConstants.KnownIndexFields.SiteContentItem] == "1");
                searchResults = searchResults.Where(item => item.Language == CurrentLanguageName);
                searchResults = searchResults.Where(GetContentExpression(keyword));
                searchResults = searchResults.Page(searchOptions.StartPageIndex, searchOptions.NumberOfItemsToReturn);

                var results  = searchResults.GetResults();
                var response = SearchResponse.CreateFromSearchResultsItems(searchOptions, results);

                return(response);
            }
        }
示例#12
0
        public EventsList FindEvents(int pageNo = 0, int pageSize = 4, string name = "")
        {
            pageSize = pageSize > 10 ? 10 : pageSize;
            pageSize = pageSize < 1 ? 1 : pageSize;

            var indexname = $"events_{Context.Database.Name.ToLower()}_index";
            var index     = ContentSearchManager.GetIndex(indexname);

            using (var context = index.CreateSearchContext())
            {
                var query = context.GetQueryable <EventDetails>()
                            .Where(i => i.Language == Context.Language.Name);

                if (!string.IsNullOrEmpty(name))
                {
                    query = query.Where(i => i.ContentHeading.Contains(name));
                }

                var results = query.Page(pageNo, pageSize).GetResults();

                return(new EventsList
                {
                    Events = results.Hits.Select(h => h.Document).ToArray(),
                    TotalResultCount = results.TotalSearchResults,
                    PageSize = PageSize
                });
            }
        }
        public IEnumerable <Item> GetItems(Item startItem)
        {
            // If a null start item is used, simply return an empty list
            if (startItem == null)
            {
                return(new List <Item>());
            }

            var items = new List <Item> {
                startItem
            };
            var indexable = new SitecoreIndexableItem(startItem);

            using (var searchContext = ContentSearchManager.GetIndex(indexable)
                                       .CreateSearchContext(SearchSecurityOptions.DisableSecurityCheck))
            {
                // Filter the search by the start item language and only return results that are the latest version.
                var results = searchContext.GetQueryable <ExtendedSearchResultItem>()
                              .Where(x => x.Paths.Contains(startItem.ID) && x.Language == startItem.Language.Name && x.LatestVersion).GetResults().ToList();
                if (results.Any())
                {
                    items.AddRange(results.Select(x => x.Document.GetItem()));
                }
            }

            return(items);
        }
        public ActionResult Index()
        {
            string searchText = Request.QueryString["text"] ?? string.Empty;

            if (string.IsNullOrEmpty(searchText))
            {
                return(View());
            }

            var queryOptions = new QueryOptions
            {
                Grouping = new GroupingParameters
                {
                    Fields = new[] { "type_t" },
                    Limit  = 10
                }
            };

            var indexName = $"sitecore_{Sitecore.Context.Database.Name}_index";
            var index     = ContentSearchManager.GetIndex(indexName);

            SolrQueryResults <SearchResultItem> results;

            using (var context = index.CreateSearchContext())
            {
                results = context.Query <SearchResultItem>($"(language_t:{searchText})", queryOptions);
            }
            return(View(results));
        }
        public IEnumerable <IEventDetailsPage> SearchEvents(
            IEventPipeline pipeline,
            EventSearchSettings searchSettings)
        {
            Throw.IfNull(searchSettings, nameof(searchSettings));
            Throw.IfNull(pipeline, nameof(pipeline));

            using (var ctx = ContentSearchManager.GetIndex(IndexName).CreateSearchContext())
            {
                var queryable     = ctx.GetQueryable <EventDetailsSearchItem>();
                var searchResults = pipeline.Process(searchSettings, queryable).GetResults();

                if (searchResults != null && searchResults.TotalSearchResults > 0)
                {
                    var data = searchResults.Hits
                               .Where(i => i.Document != null)
                               .Select(i => i.Document);

                    var listResult = new List <IEventDetailsPage>();

                    foreach (var searchItem in data)
                    {
                        listResult.Add(_sitecoreService.GetItem <IEventDetailsPage>(searchItem.GetItem()));
                    }

                    return(listResult);
                }
            }

            return(Enumerable.Empty <IEventDetailsPage>());
        }
示例#16
0
        public static void UpdateIndex()
        {
            var settings = WeBlogSettings.Instance;
            var index    = ContentSearchManager.GetIndex(settings.SearchIndexName + "-master");

            index.Rebuild();
        }
        public IEnumerable <IEventTag> GetAllTags()
        {
            const string standardValues = "__Standard Values";

            using (var ctx = ContentSearchManager.GetIndex(IndexName).CreateSearchContext())
            {
                var searchResults = ctx.GetQueryable <EventTagSearchItem>()
                                    .Where(i => i.TemplateId == EventTag.TemplateId && i.Name != standardValues)
                                    .GetResults();

                if (searchResults != null && searchResults.TotalSearchResults > 0)
                {
                    var data = searchResults.Hits
                               .Where(i => i.Document != null)
                               .Select(i => i.Document);

                    var listResult = new List <IEventTag>();

                    foreach (var searchItem in data)
                    {
                        listResult.Add(_sitecoreService.GetItem <IEventTag>(searchItem.GetItem()));
                    }

                    return(listResult);
                }
            }

            return(Enumerable.Empty <IEventTag>());
        }
示例#18
0
        /// <summary>
        /// Search Item from index
        /// </summary>
        /// <param name="contextItem">Context item</param>
        /// <param name="itemName">Item name</param>
        /// <param name="templateId">Item teamplate Id</param>
        /// <param name="searchRootNode">Search root node</param>
        /// <param name="includeSiteName">Include site name</param>
        /// <returns></returns>
        private Item SearchItemFromIndex(Item contextItem, string itemName, ID templateId, ID searchRootNode, bool includeSiteName)
        {
            string siteName = string.Empty;

            // Seperate siteName from itemName
            if (includeSiteName)
            {
                siteName = itemName?.Split(new[] { Constants.Blank }, StringSplitOptions.RemoveEmptyEntries)?.Last() ?? string.Empty;
                itemName = itemName?.Replace(siteName, string.Empty);
            }
            // try to search and resolve item from index
            var indexable = new SitecoreIndexableItem(contextItem);

            using (var searchContext = ContentSearchManager.GetIndex(indexable).CreateSearchContext())
            {
                var results = searchContext.GetQueryable <SearchResultItem>()
                              .Where(x => x.TemplateId == templateId &&
                                     x.Paths.Contains(searchRootNode) &&
                                     x.Language.Equals(Context.Language.Name, StringComparison.InvariantCultureIgnoreCase) &&
                                     x.Name.Equals(itemName, StringComparison.InvariantCultureIgnoreCase))
                              .ToList();

                if (!results.Any())
                {
                    return(null);
                }

                return(includeSiteName && !string.IsNullOrEmpty(siteName)
                    ? results.First(x => x.GetItem().SiteName().NormalizeItemName() == siteName)?.GetItem() ?? null
                    : results.First()?.GetItem() ?? null);
            }
        }
        public override void Process(HttpRequestArgs args)
        {
            if (Context.Item == null)
            {
                //http://addemo/Books{/2018/09/07/11/18/}bookname
                var requestUrl = args.Url.ItemPath;

                // remove last element from path and see if resulting path is a bucket
                var index = requestUrl.LastIndexOf('/');
                if (index > 0)
                {
                    var bucketPath = requestUrl.Substring(0, index);
                    var bucketItem = args.GetItem(bucketPath);

                    if (bucketItem != null && BucketManager.IsBucket(bucketItem))
                    {
                        var itemName = requestUrl.Substring(index + 1).Replace("-", " ");

                        // locate item in bucket by name
                        using (var searchContext = ContentSearchManager.GetIndex("sitecore_web_index").CreateSearchContext())
                        {
                            var result = searchContext.GetQueryable <SearchResultItem>().
                                         Where(x => x.Name == itemName && x.TemplateId == BookTemplate.Book.ID)
                                         .FirstOrDefault();
                            if (result != null)
                            {
                                Context.Item = result.GetItem();
                            }
                        }
                    }
                }
            }
        }
示例#20
0
        public Item SearchPeopleByOktaId(string identifier)
        {
            Sitecore.Diagnostics.Assert.IsNotNullOrEmpty(identifier, "identifier can't be null or empty");

            var peopleFolder = _database.GetItem(Constants.Person.Folder.FOLDER_ID);

            Sitecore.Diagnostics.Assert.IsNotNull(peopleFolder, "can't find people folder");

            var indexable = new SitecoreIndexableItem(peopleFolder);

            using (var context = ContentSearchManager.GetIndex(indexable).CreateSearchContext())
            {
                //original search query conditions that pull back blog items with tags in common
                var searchQuery = context.GetQueryable <PeopleDataItem>().Where(x => x.TemplateId == Constants.Person.Template.TEMPLATE_ID && x.Paths.Contains(peopleFolder.ID));
                var predicate   = PredicateBuilder.True <PeopleDataItem>();
                predicate   = predicate.And(x => x.OktaId == identifier);
                searchQuery = searchQuery.Where(predicate);
                var searchResults = searchQuery.GetResults();

                if (searchResults != null && searchResults.Any())
                {
                    var person     = searchResults.FirstOrDefault();
                    var personItem = _database.GetItem(person.Document.ItemId);
                    return(personItem);
                }
            }
            return(null);
        }
示例#21
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));
            }
        }
示例#22
0
        public static List <ID> GetTagItemIds(IEnumerable <string> taxonomyItemNames)
        {
            try
            {
                Tag tagRepository = GetTagRepositoryItem();
                using (IProviderSearchContext context = ContentSearchManager.GetIndex(new SitecoreIndexableItem(tagRepository.InnerItem)).CreateSearchContext())
                {
                    Expression <Func <SearchResultItem, bool> > predicate = PredicateBuilder.True <SearchResultItem>();
                    predicate = predicate.And(item => item.TemplateId == ID.Parse(Tag.TagTemplateId));
                    predicate = predicate.And(item => item.Language == Context.Language.Name);
                    Expression <Func <SearchResultItem, bool> > predicate1 = PredicateBuilder.True <SearchResultItem>();
                    taxonomyItemNames.ForEach(name =>
                    {
                        predicate1 = predicate1.Or(p => p.Name == name);
                    });
                    predicate = predicate.And(predicate1);

                    List <ID> returnList = context.GetQueryable <SearchResultItem>().Where(predicate).Select(result => result.ItemId).ToList();

                    return(returnList);
                }
            }
            catch (Exception ex)
            {
                Log.Error("XBlog GetTaxonomyItemIds error", ex, new object());
            }

            return(new List <ID>(0));
        }
示例#23
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));
            }
        }
示例#24
0
 public void GetThumbnailPath(PlanEvent obj)
 {
     if (!string.IsNullOrWhiteSpace(obj.PlanTitleID))
     {
         var itemBuckets = db.GetItem("/sitecore/content/EPG/Sections/PlanBuckets/AsiaPlan/");
         if (itemBuckets != null && BucketManager.IsBucket(itemBuckets))
         {
             using (var searchContext = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
             {
                 var result = searchContext.GetQueryable <SearchResultItem>().Where(x => x.Name.Equals(obj.PlanTitleID) && x.TemplateId == new ID("{50B06575-9906-4B50-8E63-3E8BBEF1F858}")).FirstOrDefault();
                 if (result != null)
                 {
                     Item item = result.GetItem();
                     if (item == null)
                     {
                         return;
                     }
                     var portraitimage = (Sitecore.Data.Fields.ImageField)item.Fields["Portrait Image"];
                     var landscape     = (Sitecore.Data.Fields.ImageField)item.Fields["Landscape Image"];
                     if (portraitimage != null && (portraitimage).MediaItem != null)
                     {
                         string imagepath = ConvertSitecorePathtoMediaMasterPath((portraitimage).MediaItem.Paths.ContentPath);
                         obj.PortraitImage = imagepath;
                     }
                     if (landscape != null && (landscape).MediaItem != null)
                     {
                         string imagepath = ConvertSitecorePathtoMediaMasterPath((landscape).MediaItem.Paths.ContentPath);
                         obj.LandscapeImage = imagepath;
                     }
                 }
             }
         }
     }
 }
示例#25
0
        protected void ResetCache()
        {
            var index = ContentSearchManager.GetIndex(Constants.Index.MasterIndex);

            index.RebuildAsync(IndexingOptions.Default, System.Threading.CancellationToken.None).Wait();
            CacheManager.ClearAllCaches();
        }
示例#26
0
 public PlanEvent GetThumbnailBytes(PlanEvent obj)
 {
     byte[] bytes = null;
     if (obj != null)
     {
         var itemBuckets = db.GetItem("/sitecore/content/EPG/Sections/PlanBuckets/AsiaPlan/");
         if (itemBuckets != null && BucketManager.IsBucket(itemBuckets))
         {
             using (var searchContext = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
             {
                 var result = searchContext.GetQueryable <SearchResultItem>().Where(x => x.Name.Equals(obj.PlanTitleID) && x.TemplateId == new ID("{50B06575-9906-4B50-8E63-3E8BBEF1F858}")).FirstOrDefault();
                 if (result != null)
                 {
                     if (!string.IsNullOrWhiteSpace(result.GetItem().Fields["Portrait Image"].Value))
                     {
                         MediaItem mediaitem = ((Sitecore.Data.Fields.ImageField)result.GetItem().Fields["Portrait Image"]).MediaItem;
                         Stream    stream    = new MediaItem(mediaitem).GetMediaStream();
                         bytes = new byte[stream.Length];
                         int l = stream.Read(bytes, 0, (int)stream.Length);
                         obj.PortraitImageByte = bytes;
                     }
                     if (!string.IsNullOrWhiteSpace(result.GetItem().Fields["Landscape Image"].Value))
                     {
                         MediaItem mediaitem = ((Sitecore.Data.Fields.ImageField)result.GetItem().Fields["Landscape Image"]).MediaItem;
                         Stream    stream    = new MediaItem(mediaitem).GetMediaStream();
                         bytes = new byte[stream.Length];
                         int l = stream.Read(bytes, 0, (int)stream.Length);
                         obj.LandscapeImageByte = bytes;
                     }
                 }
             }
         }
     }
     return(obj);
 }
        public IHttpActionResult Flush()
        {
            var driver = new MongoDbDriver(ConfigurationManager.ConnectionStrings["analytics"].ConnectionString);

            driver.ResetDatabase();

            var item = (Context.ContentDatabase ?? Context.Database).GetItem("/sitecore/media library/Images/xgen");

            item?.Delete();

            var sql = new SqlReportingStorageProvider("reporting");

            sql.ExcludedTableFromDataDeletion("dbo", "Segments");
            sql.DeleteAllReportingData();


            var index = ContentSearchManager.GetIndex(CustomerIntelligenceConfig.ContactSearch.SearchIndexName);

            index.Reset();
            index.Refresh();
            using (var ctx = index.CreateUpdateContext())
            {
                ctx.Optimize();
            }

            return(Ok());
        }
示例#28
0
 public void SetThumbnailPath(string PlanTitleId, Item mi, string type)
 {
     if (!string.IsNullOrWhiteSpace(PlanTitleId))
     {
         var itemBuckets = db.GetItem("/sitecore/content/EPG/Sections/PlanBuckets/AsiaPlan/");
         if (itemBuckets != null && BucketManager.IsBucket(itemBuckets))
         {
             using (var searchContext = ContentSearchManager.GetIndex("sitecore_master_index").CreateSearchContext())
             {
                 var result = searchContext.GetQueryable <SearchResultItem>().Where(x => x.Name.Equals(PlanTitleId) && x.TemplateId == new ID("{50B06575-9906-4B50-8E63-3E8BBEF1F858}")).FirstOrDefault();
                 if (result != null && mi != null)
                 {
                     using (new SecurityDisabler())
                     {
                         Item item = result.GetItem();
                         item.Editing.BeginEdit();
                         if (type.Equals("portrait"))
                         {
                             ((Sitecore.Data.Fields.ImageField)item.Fields["Portrait Image"]).MediaID = mi.ID;
                             //     ((Sitecore.Data.Fields.ImageField)item.Fields["Portrait Image"]).UpdateLink(mi.Links.GetAllLinks()[0]);
                         }
                         else
                         {
                             ((Sitecore.Data.Fields.ImageField)item.Fields["Landscape Image"]).MediaID = mi.ID;
                             //     ((Sitecore.Data.Fields.ImageField)item.Fields["Landscape Image"]).Value = mi.Parent.Paths.FullPath;
                         }
                         item.Editing.EndEdit();
                     }
                 }
             }
         }
     }
 }
示例#29
0
        public static Author GetAuthorByName(Item currentItem, string authorName)
        {
            try
            {
                BlogSettings settingsItem = General.DataManager.GetBlogSettingsItem(currentItem);
                ISearchIndex index        = ContentSearchManager.GetIndex(new SitecoreIndexableItem(settingsItem.AuthorFolder));

                using (IProviderSearchContext context = index.CreateSearchContext())
                {
                    Expression <Func <SearchResultItem, bool> > predicate = PredicateBuilder.True <SearchResultItem>();
                    predicate = predicate.And(item => item.TemplateId == ID.Parse(Author.AuthorTemplateId) && item.Paths.Contains(settingsItem.AuthorFolder.ID));
                    predicate = predicate.And(c => c[Author.AuthorFullNameField] == authorName);

                    IQueryable <SearchResultItem> results = context.GetQueryable <SearchResultItem>().Where(predicate).OrderBy(t => t.Name);
                    if (results.Any())
                    {
                        return(results.FirstOrDefault().GetItem().CreateAs <Author>());
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error("XBlog GetCategory error", ex, new object());
            }
            return(null);
        }
示例#30
0
        /// <summary>
        /// Search for comments.
        /// </summary>
        /// <param name="item">The root item under which to search for comments.</param>
        /// <param name="projection">The function used to project the search results.</param>
        /// <returns>A list of the found comments.</returns>
        protected virtual IList <T> SearchComments <T>(Item item, Func <IQueryable <CommentResultItem>, IList <T> > projection)
        {
            if (item == null)
            {
                return(new T[0]);
            }

            var blog = ManagerFactory.BlogManagerInstance.GetCurrentBlog(item);

            if (blog == null)
            {
                return(new T[0]);
            }

            var indexName = Settings.SearchIndexName;

            if (string.IsNullOrEmpty(indexName))
            {
                return(new T[0]);
            }

            var index = ContentSearchManager.GetIndex(indexName + "-" + item.Database.Name);

            if (index == null)
            {
                return(new T[0]);
            }

            using (var context = index.CreateSearchContext())
            {
                var queryable = CreateQueryable(context, item, blog);
                return(projection(queryable));
            }
        }