From 0ce503b369e4f792edec09f8d28aba9c480de688 Mon Sep 17 00:00:00 2001 From: Shannon Date: Fri, 6 Mar 2015 13:34:09 +1100 Subject: [PATCH] Fixes: U4-6349 Optimizing indexes says that the index is not optimized --- .../Search/LuceneIndexerExtensions.cs | 43 ++++++++----------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/src/Umbraco.Web/Search/LuceneIndexerExtensions.cs b/src/Umbraco.Web/Search/LuceneIndexerExtensions.cs index 11615e1065..3cc7908dfd 100644 --- a/src/Umbraco.Web/Search/LuceneIndexerExtensions.cs +++ b/src/Umbraco.Web/Search/LuceneIndexerExtensions.cs @@ -13,23 +13,6 @@ namespace Umbraco.Web.Search /// internal static class ExamineExtensions { - public static LuceneSearcher GetSearcherForIndexer(this LuceneIndexer indexer) - { - var indexSet = indexer.IndexSetName; - var searcher = ExamineManager.Instance.SearchProviderCollection.OfType() - .FirstOrDefault(x => x.IndexSetName == indexSet); - if (searcher == null) - throw new InvalidOperationException("No searcher assigned to the index set " + indexer.IndexSetName); - return searcher; - } - - private static IndexReader GetIndexReaderForSearcher(this BaseLuceneSearcher searcher) - { - var indexSearcher = searcher.GetSearcher() as IndexSearcher; - if (indexSearcher == null) - throw new InvalidOperationException("The index searcher is not of type " + typeof(IndexSearcher) + " cannot execute this method"); - return indexSearcher.GetIndexReader(); - } /// /// Return the number of indexed documents in Lucene @@ -38,7 +21,10 @@ namespace Umbraco.Web.Search /// public static int GetIndexDocumentCount(this LuceneIndexer indexer) { - return indexer.GetSearcherForIndexer().GetIndexReaderForSearcher().NumDocs(); + using (var reader = indexer.GetIndexWriter().GetReader()) + { + return reader.NumDocs(); + } } /// @@ -48,7 +34,10 @@ namespace Umbraco.Web.Search /// public static int GetIndexFieldCount(this LuceneIndexer indexer) { - return indexer.GetSearcherForIndexer().GetIndexReaderForSearcher().GetFieldNames(IndexReader.FieldOption.ALL).Count; + using (var reader = indexer.GetIndexWriter().GetReader()) + { + return reader.GetFieldNames(IndexReader.FieldOption.ALL).Count; + } } /// @@ -58,7 +47,10 @@ namespace Umbraco.Web.Search /// public static bool IsIndexOptimized(this LuceneIndexer indexer) { - return indexer.GetSearcherForIndexer().GetIndexReaderForSearcher().IsOptimized(); + using (var reader = indexer.GetIndexWriter().GetReader()) + { + return reader.IsOptimized(); + } } /// @@ -70,9 +62,9 @@ namespace Umbraco.Web.Search /// If the index does not exist we'll consider it locked /// public static bool IsIndexLocked(this LuceneIndexer indexer) - { - return !indexer.IndexExists() - || IndexWriter.IsLocked(indexer.GetSearcherForIndexer().GetIndexReaderForSearcher().Directory()); + { + return indexer.IndexExists() == false + || IndexWriter.IsLocked(indexer.GetLuceneDirectory()); } /// @@ -82,7 +74,10 @@ namespace Umbraco.Web.Search /// public static int GetDeletedDocumentsCount(this LuceneIndexer indexer) { - return indexer.GetSearcherForIndexer().GetIndexReaderForSearcher().NumDeletedDocs(); + using (var reader = indexer.GetIndexWriter().GetReader()) + { + return reader.NumDeletedDocs(); + } } } } \ No newline at end of file