Author: erwan
Date: Tue Sep  4 21:26:41 2012
New Revision: 1380896

URL: http://svn.apache.org/viewvc?rev=1380896&view=rev
Log:
Upgrading to lucene 3.6.1

Added:
    ofbiz/trunk/applications/content/lib/lucene-core-3.6.1.jar   (with props)
Removed:
    ofbiz/trunk/applications/content/lib/lucene-core-3.5.0.jar
Modified:
    ofbiz/trunk/.classpath
    ofbiz/trunk/LICENSE
    
ofbiz/trunk/applications/content/src/org/ofbiz/content/search/SearchWorker.java
    ofbiz/trunk/applications/content/src/org/ofbiz/content/test/LuceneTests.java

Modified: ofbiz/trunk/.classpath
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/.classpath?rev=1380896&r1=1380895&r2=1380896&view=diff
==============================================================================
--- ofbiz/trunk/.classpath (original)
+++ ofbiz/trunk/.classpath Tue Sep  4 21:26:41 2012
@@ -4,7 +4,7 @@
     <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
     <classpathentry kind="lib" 
path="applications/content/lib/fontbox-1.4.0.jar"/>
     <classpathentry kind="lib" 
path="applications/content/lib/jempbox-1.4.0.jar"/>
-    <classpathentry kind="lib" 
path="applications/content/lib/lucene-core-3.5.0.jar"/>
+    <classpathentry kind="lib" 
path="applications/content/lib/lucene-core-3.6.1.jar"/>
     <classpathentry kind="lib" 
path="applications/content/lib/pdfbox-1.4.0.jar"/>
     <classpathentry kind="lib" 
path="applications/content/lib/dom4j-1.6.1.jar"/>
     <classpathentry kind="lib" 
path="applications/content/lib/poi-3.8-20120326.jar"/>

Modified: ofbiz/trunk/LICENSE
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=1380896&r1=1380895&r2=1380896&view=diff
==============================================================================
--- ofbiz/trunk/LICENSE (original)
+++ ofbiz/trunk/LICENSE Tue Sep  4 21:26:41 2012
@@ -104,7 +104,7 @@ ofbiz/trunk/framework/geronimo/lib/geron
 ofbiz/trunk/framework/geronimo/lib/geronimo-transaction-2.1.1.jar
 ofbiz/trunk/applications/content/lib/fontbox-1.4.0.jar
 ofbiz/trunk/applications/content/lib/jempbox-1.4.0.jar
-ofbiz/trunk/applications/content/lib/lucene-core-3.5.0.jar
+ofbiz/trunk/applications/content/lib/lucene-core-3.6.1.jar
 ofbiz/trunk/applications/content/lib/pdfbox-1.4.0.jar
 ofbiz/trunk/applications/content/lib/poi-3.8-20120326.jar
 ofbiz/trunk/applications/content/lib/poi-ooxml-3.8-20120326.jar

Added: ofbiz/trunk/applications/content/lib/lucene-core-3.6.1.jar
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/lib/lucene-core-3.6.1.jar?rev=1380896&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ofbiz/trunk/applications/content/lib/lucene-core-3.6.1.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: 
ofbiz/trunk/applications/content/src/org/ofbiz/content/search/SearchWorker.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/search/SearchWorker.java?rev=1380896&r1=1380895&r2=1380896&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/content/src/org/ofbiz/content/search/SearchWorker.java 
(original)
+++ 
ofbiz/trunk/applications/content/src/org/ofbiz/content/search/SearchWorker.java 
Tue Sep  4 21:26:41 2012
@@ -19,12 +19,14 @@
 package org.ofbiz.content.search;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
+import org.apache.lucene.index.*;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilGenerics;
@@ -40,15 +42,11 @@ import org.ofbiz.service.LocalDispatcher
 import org.apache.lucene.analysis.standard.StandardAnalyzer;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.Term;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.lucene.util.Version;
 
-
 /**
  * SearchWorker Class
  */
@@ -56,7 +54,7 @@ public class SearchWorker {
 
     public static final String module = SearchWorker.class.getName();
 
-    public static final Version LUCENE_VERSION = Version.LUCENE_35;
+    public static final Version LUCENE_VERSION = Version.LUCENE_36;
 
     public static Map<String, Object> indexTree(LocalDispatcher dispatcher, 
Delegator delegator, String siteId, Map<String, Object> context, String path) 
throws Exception {
         Map<String, Object> results = FastMap.newInstance();
@@ -99,24 +97,39 @@ public class SearchWorker {
         return indexAllPath;
     }
 
-    private static void indexContentList(LocalDispatcher dispatcher, Delegator 
delegator, Map<String, Object> context, List<String> idList, String path) 
throws Exception {
+    private static IndexWriter getDefaultIndexWriter(Directory directory) {
+        IndexWriter writer = null;
+        long savedWriteLockTimeout = 
IndexWriterConfig.getDefaultWriteLockTimeout();
+        Analyzer analyzer = new StandardAnalyzer(LUCENE_VERSION);
+        IndexWriterConfig conf = new IndexWriterConfig(LUCENE_VERSION, 
analyzer);
+        IndexWriterConfig.setDefaultWriteLockTimeout(2000);
+        try {
+            writer  = new IndexWriter(directory, conf);
+        } catch (CorruptIndexException e) {
+            Debug.logError("Corrupted lucene index: "  + e.getMessage(), 
module);
+        } catch (LockObtainFailedException e) {
+            Debug.logError("Could not obtain Lock on lucene index "  + 
e.getMessage(), module);
+        } catch (IOException e) {
+            Debug.logError(e.getMessage(), module);
+        } finally {
+            
IndexWriterConfig.setDefaultWriteLockTimeout(savedWriteLockTimeout);
+        }
+        return writer;
+    }
+
+    public static void indexContentList(LocalDispatcher dispatcher, Delegator 
delegator, Map<String, Object> context,List<String> idList, String path) throws 
Exception {
         Directory directory = FSDirectory.open(new File(getIndexPath(path)));
         if (Debug.infoOn()) Debug.logInfo("in indexContentList, indexAllPath: 
" + directory.toString(), module);
         // Delete existing documents
-        IndexReader reader = null;
-        try {
-            reader = IndexReader.open(directory, false);
-        } catch (Exception e) {
-            // ignore
-        }
+        IndexWriter writer = getDefaultIndexWriter(directory);
         List<GenericValue> contentList = FastList.newInstance();
         for (String id : idList) {
             if (Debug.infoOn()) Debug.logInfo("in indexContentList, id:" + id, 
module);
             try {
                 GenericValue content = delegator.findOne("Content", UtilMisc 
.toMap("contentId", id), true);
                 if (content != null) {
-                    if (reader != null) {
-                        deleteContentDocuments(content, reader);
+                    if (writer != null) {
+                        deleteContentDocuments(content, writer);
                     }
                     contentList.add(content);
                 }
@@ -125,43 +138,39 @@ public class SearchWorker {
                 return;
             }
         }
-        if (reader != null) {
-            reader.close();
-        }
-        // Now create
-        IndexWriter writer = null;
-        long savedWriteLockTimeout = 
IndexWriterConfig.getDefaultWriteLockTimeout();
-        Analyzer analyzer = new StandardAnalyzer(LUCENE_VERSION);
-        IndexWriterConfig conf = new IndexWriterConfig(LUCENE_VERSION, 
analyzer);
-
-        try {
-            IndexWriterConfig.setDefaultWriteLockTimeout(2000);
-            writer  = new IndexWriter(directory, conf);
-        } finally {
-            
IndexWriterConfig.setDefaultWriteLockTimeout(savedWriteLockTimeout);
-        }
-
         for (GenericValue gv : contentList) {
             indexContent(dispatcher, delegator, context, gv, writer);
         }
-        writer.forceMerge(1);
+        try {
+            writer.forceMerge(1);
+        } catch (NullPointerException e) {
+            Debug.logError(e, module);
+        }
         writer.close();
     }
 
-    private static void deleteContentDocuments(GenericValue content, 
IndexReader reader) throws Exception {
+    private static void deleteContentDocuments(GenericValue content, 
IndexWriter writer) throws Exception {
         String contentId = content.getString("contentId");
         Term term = new Term("contentId", contentId);
-        deleteDocumentsByTerm(term, reader);
+        deleteDocumentsByTerm(term, writer);
         String dataResourceId = content.getString("dataResourceId");
         if (dataResourceId != null) {
             term = new Term("dataResourceId", dataResourceId);
-            deleteDocumentsByTerm(term, reader);
+            deleteDocumentsByTerm(term, writer);
         }
     }
 
-    private static void deleteDocumentsByTerm(Term term, IndexReader reader) 
throws Exception {
-        int qtyDeleted = reader.deleteDocuments(term);
-        if (Debug.infoOn()) Debug.logInfo("Deleted " + qtyDeleted + "documents 
for term: " + term, module);
+    private static void deleteDocumentsByTerm(Term term, IndexWriter writer) 
throws Exception {
+        IndexReader reader = IndexReader.open(writer, false);
+        int qtyBefore = reader.docFreq(term);
+
+        //deletes documents, all the rest is for logging
+        writer.deleteDocuments(term);
+
+        int qtyAfter = reader.docFreq(term);
+        reader.close();
+
+        if (Debug.infoOn()) Debug.logInfo("For term " + term.toString() + ", 
documents deleted: " + qtyBefore + ", remaining: " + qtyAfter, module);
     }
 
     private static void indexContent(LocalDispatcher dispatcher, Delegator 
delegator, Map<String, Object> context, GenericValue content, IndexWriter 
writer) throws Exception {

Modified: 
ofbiz/trunk/applications/content/src/org/ofbiz/content/test/LuceneTests.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/test/LuceneTests.java?rev=1380896&r1=1380895&r2=1380896&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/content/src/org/ofbiz/content/test/LuceneTests.java 
(original)
+++ 
ofbiz/trunk/applications/content/src/org/ofbiz/content/test/LuceneTests.java 
Tue Sep  4 21:26:41 2012
@@ -36,7 +36,6 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TopScoreDocCollector;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
-import org.apache.lucene.util.Version;
 import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.content.search.SearchWorker;
@@ -76,7 +75,7 @@ public class LuceneTests extends OFBizTe
         Directory directory = FSDirectory.open(new 
File(SearchWorker.getIndexPath(null)));
         IndexReader r = null;
         try {
-            r = IndexReader.open(directory, false);
+            r = IndexReader.open(directory);
         } catch (Exception e) {
             // ignore
         }


Reply via email to