Fixes: U4-6349 Optimizing indexes says that the index is not optimized

This commit is contained in:
Shannon
2015-03-06 13:34:09 +11:00
parent 6d5d8fb39c
commit 0ce503b369

View File

@@ -13,23 +13,6 @@ namespace Umbraco.Web.Search
/// </summary>
internal static class ExamineExtensions
{
public static LuceneSearcher GetSearcherForIndexer(this LuceneIndexer indexer)
{
var indexSet = indexer.IndexSetName;
var searcher = ExamineManager.Instance.SearchProviderCollection.OfType<LuceneSearcher>()
.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();
}
/// <summary>
/// Return the number of indexed documents in Lucene
@@ -38,7 +21,10 @@ namespace Umbraco.Web.Search
/// <returns></returns>
public static int GetIndexDocumentCount(this LuceneIndexer indexer)
{
return indexer.GetSearcherForIndexer().GetIndexReaderForSearcher().NumDocs();
using (var reader = indexer.GetIndexWriter().GetReader())
{
return reader.NumDocs();
}
}
/// <summary>
@@ -48,7 +34,10 @@ namespace Umbraco.Web.Search
/// <returns></returns>
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;
}
}
/// <summary>
@@ -58,7 +47,10 @@ namespace Umbraco.Web.Search
/// <returns></returns>
public static bool IsIndexOptimized(this LuceneIndexer indexer)
{
return indexer.GetSearcherForIndexer().GetIndexReaderForSearcher().IsOptimized();
using (var reader = indexer.GetIndexWriter().GetReader())
{
return reader.IsOptimized();
}
}
/// <summary>
@@ -70,9 +62,9 @@ namespace Umbraco.Web.Search
/// If the index does not exist we'll consider it locked
/// </remarks>
public static bool IsIndexLocked(this LuceneIndexer indexer)
{
return !indexer.IndexExists()
|| IndexWriter.IsLocked(indexer.GetSearcherForIndexer().GetIndexReaderForSearcher().Directory());
{
return indexer.IndexExists() == false
|| IndexWriter.IsLocked(indexer.GetLuceneDirectory());
}
/// <summary>
@@ -82,7 +74,10 @@ namespace Umbraco.Web.Search
/// <returns></returns>
public static int GetDeletedDocumentsCount(this LuceneIndexer indexer)
{
return indexer.GetSearcherForIndexer().GetIndexReaderForSearcher().NumDeletedDocs();
using (var reader = indexer.GetIndexWriter().GetReader())
{
return reader.NumDeletedDocs();
}
}
}
}