diff --git a/src/Orchard.Web/Modules/Lucene/Services/LuceneIndexProvider.cs b/src/Orchard.Web/Modules/Lucene/Services/LuceneIndexProvider.cs index c0b8dc3b9..d0235d3be 100644 --- a/src/Orchard.Web/Modules/Lucene/Services/LuceneIndexProvider.cs +++ b/src/Orchard.Web/Modules/Lucene/Services/LuceneIndexProvider.cs @@ -114,23 +114,19 @@ namespace Lucene.Services { } public void CreateIndex(string indexName) { - lock ( _appDataFolder ) { - var writer = new IndexWriter(GetDirectory(indexName), _analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED); - writer.Close(); - } + var writer = new IndexWriter(GetDirectory(indexName), _analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED); + writer.Close(); Logger.Information("Index [{0}] created", indexName); } public void DeleteIndex(string indexName) { - lock ( _appDataFolder ) { - new DirectoryInfo(_appDataFolder.MapPath(_appDataFolder.Combine(_basePath, indexName))) - .Delete(true); + new DirectoryInfo(_appDataFolder.MapPath(_appDataFolder.Combine(_basePath, indexName))) + .Delete(true); - var settingsFileName = GetSettingsFileName(indexName); - if (File.Exists(settingsFileName)) { - File.Delete(settingsFileName); - } + var settingsFileName = GetSettingsFileName(indexName); + if (File.Exists(settingsFileName)) { + File.Delete(settingsFileName); } } @@ -143,35 +139,33 @@ namespace Lucene.Services { } public void Store(string indexName, IEnumerable indexDocuments) { - if(indexDocuments.AsQueryable().Count() == 0) { + if (indexDocuments.AsQueryable().Count() == 0) { return; } // Remove any previous document for these content items Delete(indexName, indexDocuments.Select(i => i.ContentItemId)); - lock ( _appDataFolder ) { - var writer = new IndexWriter(GetDirectory(indexName), _analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED); - LuceneDocumentIndex current = null; + var writer = new IndexWriter(GetDirectory(indexName), _analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED); + LuceneDocumentIndex current = null; - try { + try { - foreach (var indexDocument in indexDocuments) { - current = indexDocument; - var doc = CreateDocument(indexDocument); + foreach (var indexDocument in indexDocuments) { + current = indexDocument; + var doc = CreateDocument(indexDocument); - writer.AddDocument(doc); - Logger.Debug("Document [{0}] indexed", indexDocument.ContentItemId); - } - } - catch (Exception ex) { - Logger.Error(ex, "An unexpected error occured while add the document [{0}] from the index [{1}].", current.ContentItemId, indexName); - } - finally { - writer.Optimize(); - writer.Close(); + writer.AddDocument(doc); + Logger.Debug("Document [{0}] indexed", indexDocument.ContentItemId); } } + catch (Exception ex) { + Logger.Error(ex, "An unexpected error occured while add the document [{0}] from the index [{1}].", current.ContentItemId, indexName); + } + finally { + writer.Optimize(); + writer.Close(); + } } public void Delete(string indexName, int documentId) { @@ -183,28 +177,25 @@ namespace Lucene.Services { return; } - lock ( _appDataFolder ) { + var writer = new IndexWriter(GetDirectory(indexName), _analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED); - var writer = new IndexWriter(GetDirectory(indexName), _analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED); + try { + var query = new BooleanQuery(); try { - var query = new BooleanQuery(); - - try { - foreach (var id in documentIds) { - query.Add(new BooleanClause(new TermQuery(new Term("id", id.ToString())), BooleanClause.Occur.SHOULD)); - } - - writer.DeleteDocuments(query); - } - catch (Exception ex) { - Logger.Error(ex, "An unexpected error occured while removing the documents [{0}] from the index [{1}].", String.Join(", ", documentIds), indexName); + foreach (var id in documentIds) { + query.Add(new BooleanClause(new TermQuery(new Term("id", id.ToString())), BooleanClause.Occur.SHOULD)); } + + writer.DeleteDocuments(query); } - finally { - writer.Close(); + catch (Exception ex) { + Logger.Error(ex, "An unexpected error occured while removing the documents [{0}] from the index [{1}].", String.Join(", ", documentIds), indexName); } } + finally { + writer.Close(); + } } public IDocumentIndex New(int documentId) { diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Handlers/CreateIndexingTaskHandler.cs b/src/Orchard.Web/Modules/Orchard.Indexing/Handlers/CreateIndexingTaskHandler.cs index fad36f498..604eb4140 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/Handlers/CreateIndexingTaskHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Handlers/CreateIndexingTaskHandler.cs @@ -28,12 +28,12 @@ namespace Orchard.Indexing.Handlers { void CreateIndexingTask(PublishContentContext context, ContentPart part) { _indexingTaskManager.CreateUpdateIndexTask(context.ContentItem); - UpdateIndex(); + // UpdateIndex(); } void RemoveIndexingTask(RemoveContentContext context, ContentPart part) { _indexingTaskManager.CreateDeleteIndexTask(context.ContentItem); - UpdateIndex(); + // UpdateIndex(); } private void UpdateIndex() { diff --git a/src/Orchard/Indexing/IIndexProvider.cs b/src/Orchard/Indexing/IIndexProvider.cs index 09978da31..eb0029068 100644 --- a/src/Orchard/Indexing/IIndexProvider.cs +++ b/src/Orchard/Indexing/IIndexProvider.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using Orchard.ContentManagement; namespace Orchard.Indexing { - public interface IIndexProvider : IDependency { + public interface IIndexProvider : ISingletonDependency { /// /// Creates a new index ///