private void IndexFolder(DateTime?startDate, int portalId, string folderPath) { LuceneController.ClearInstance(); try { using (var lc = LuceneController.Instance) { var fileIndexer = new DnnFilesRepository(); if (!startDate.HasValue) { Log.Logger.InfoFormat("Reindexing documents from Portal {0} folder {1}", portalId, folderPath); } var indexSince = FixedIndexingStartDate(portalId, startDate ?? DateTime.MinValue); List <LuceneIndexItem> searchDocs = fileIndexer.GetPortalSearchDocuments(portalId, folderPath, true, indexSince).ToList(); Log.Logger.DebugFormat("Found {2} documents from Portal {0} folder {1} to index", portalId, folderPath, searchDocs.Count()); FieldConfig indexJson = FilesRepository.GetIndexConfig(portalId); foreach (LuceneIndexItem indexItem in searchDocs) { Delete(indexItem, lc); lc.Store.Add(LuceneMappingUtils.CreateLuceneDocument(indexItem, indexJson)); } Log.Logger.DebugFormat("Indexed {2} documents from Portal {0} folder {1}", portalId, folderPath, searchDocs.Count()); lc.Store.Commit(); lc.Store.OptimizeSearchIndex(true); } } finally { LuceneController.ClearInstance(); } }
internal static LuceneIndexItem CreateLuceneItem(OpenFilesInfo fileInfo, FieldConfig indexConfig) { var luceneItem = new LuceneIndexItem(ItemTypeValue, fileInfo.File.PortalId.ToString(), fileInfo.File.CreatedOnDate, fileInfo.File.FileId.ToString()) { FileName = fileInfo.File.FileName, Folder = fileInfo.File.Folder.TrimEnd('/'), FileContent = DnnFilesRepository.GetFileContent(fileInfo.File) }; JObject custom = fileInfo.JsonAsJToken; custom.MakeSureFieldExists(MetaField, JTokenType.Object); custom[MetaField].HydrateDefaultFields(indexConfig); if (custom[MetaField].HasValues) { luceneItem.Meta = custom[MetaField]; } return(luceneItem); }