diff --git a/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java b/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java
index b81cddf6..3e53c17e 100644
--- a/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java
+++ b/docs-core/src/main/java/com/sismics/docs/core/util/indexing/LuceneIndexingHandler.java
@@ -62,6 +62,11 @@ public class LuceneIndexingHandler implements IndexingHandler {
*/
private DirectoryReader directoryReader;
+ /**
+ * Index writer.
+ */
+ private IndexWriter indexWriter;
+
@Override
public boolean accept() {
// Embedded Lucene can always start
@@ -84,6 +89,12 @@ public class LuceneIndexingHandler implements IndexingHandler {
directory = new SimpleFSDirectory(luceneDirectory, NoLockFactory.INSTANCE);
}
+ // Create an index writer
+ IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer());
+ config.setCommitOnClose(true);
+ config.setMergeScheduler(new SerialMergeScheduler());
+ indexWriter = new IndexWriter(directory, config);
+
// Check index version and rebuild it if necessary
if (DirectoryReader.indexExists(directory)) {
log.info("Checking index health and version");
@@ -111,6 +122,13 @@ public class LuceneIndexingHandler implements IndexingHandler {
log.error("Error closing the index reader", e);
}
}
+ if (indexWriter != null) {
+ try {
+ indexWriter.close();
+ } catch (IOException e) {
+ log.error("Error closing the index writer, index may be corrupt", e);
+ }
+ }
if (directory != null) {
try {
directory.close();
@@ -469,42 +487,16 @@ public class LuceneIndexingHandler implements IndexingHandler {
* @param runnable Runnable
*/
private void handle(LuceneRunnable runnable) {
- // Standard analyzer
- IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer());
-
- // Automatically commit when closing this writer
- config.setCommitOnClose(true);
-
- // Merge sequentially, because Lucene writing is already done asynchronously
- config.setMergeScheduler(new SerialMergeScheduler());
-
- // Creating index writer
- IndexWriter indexWriter = null;
- try {
- indexWriter = new IndexWriter(directory, config);
- } catch (IOException e) {
- log.error("Cannot create IndexWriter", e);
- }
-
try {
runnable.run(indexWriter);
} catch (Exception e) {
- log.error("Error in running index writing transaction", e);
- try {
- if (indexWriter != null) {
- indexWriter.rollback();
- }
- } catch (IOException e1) {
- log.error("Cannot rollback index writing transaction", e1);
- }
+ log.error("Error in running index writing", e);
}
try {
- if (indexWriter != null) {
- indexWriter.close();
- }
+ indexWriter.commit();
} catch (IOException e) {
- log.error("Cannot commit and close IndexWriter", e);
+ log.error("Cannot commit index writer", e);
}
}
diff --git a/docs-web/src/main/webapp/src/app/docs/controller/document/DocumentViewContent.js b/docs-web/src/main/webapp/src/app/docs/controller/document/DocumentViewContent.js
index f8f021fe..b90d1fc6 100644
--- a/docs-web/src/main/webapp/src/app/docs/controller/document/DocumentViewContent.js
+++ b/docs-web/src/main/webapp/src/app/docs/controller/document/DocumentViewContent.js
@@ -11,7 +11,6 @@ angular.module('docs').controller('DocumentViewContent', function ($scope, $root
forceHelperSize: true,
forcePlaceholderSize: true,
tolerance: 'pointer',
- handle: '.handle',
stop: function () {
// Send new positions to server
$scope.$apply(function () {
diff --git a/docs-web/src/main/webapp/src/partial/docs/document.default.html b/docs-web/src/main/webapp/src/partial/docs/document.default.html
index 6fd61a74..811cc531 100644
--- a/docs-web/src/main/webapp/src/partial/docs/document.default.html
+++ b/docs-web/src/main/webapp/src/partial/docs/document.default.html
@@ -13,10 +13,10 @@