Fixes: U4-6349 Optimizing indexes says that the index is not optimized
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user