예제 #1
0
        /// <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();
             }
        }