/// <summary> /// Rebuild the full-text index. /// </summary> /// <param name="contentItemsToIndex"></param> public void RebuildIndex(Site site, IEnumerable<IContentItem> contentItemsToIndex) { //Site currentSite = this._cuyahogaContextProvider.GetContext().CurrentSite; string indexDirectory = GetIndexDirectoryBySite(site); log.DebugFormat("SearchService.RebuildIndex: Site: {0}, indexDirectory = {1}", site.Name, indexDirectory); using (IndexBuilder indexBuilder = new IndexBuilder(indexDirectory, true, this._textExtractor)) { // Add all content items //var contentItemsToIndex = this._contentItemService.FindAllBySite(currentSite); foreach (IContentItem contentItem in contentItemsToIndex) { // Index ONLY published items if (contentItem.PublishedDate.HasValue && contentItem is ISearchableContent) { try { indexBuilder.AddContent(contentItem); } catch (Exception ex) { log.Error(string.Format("SearchService.FindContent: Error while indexing ContentItem with id {0}", contentItem.Id), ex); throw; } } } log.Debug("SearchService.FindContent: Optimizing index..."); indexBuilder.Optimize(); } }