You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2013/02/27 13:59:55 UTC

svn commit: r1450765 - in /stanbol/trunk/enhancement-engines/topic/engine/src: main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java test/java/org/apache/stanbol/enhancer/engine/topic/TopicEngineTest.java

Author: rwesten
Date: Wed Feb 27 12:59:55 2013
New Revision: 1450765

URL: http://svn.apache.org/r1450765
Log:
STANBOL-811: The last version was still not working on weindows, because it could not delete files. This version now creates a single (lazily initialised) Evaluation Solr server that is used for all calles to perfomCVFold(..). The Server is shutdown on calls to deactivate of the engine

Modified:
    stanbol/trunk/enhancement-engines/topic/engine/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java
    stanbol/trunk/enhancement-engines/topic/engine/src/test/java/org/apache/stanbol/enhancer/engine/topic/TopicEngineTest.java

Modified: stanbol/trunk/enhancement-engines/topic/engine/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancement-engines/topic/engine/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java?rev=1450765&r1=1450764&r2=1450765&view=diff
==============================================================================
--- stanbol/trunk/enhancement-engines/topic/engine/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java (original)
+++ stanbol/trunk/enhancement-engines/topic/engine/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java Wed Feb 27 12:59:55 2013
@@ -313,6 +313,16 @@ public class TopicClassificationEngine e
      */
     private File embeddedSolrServerDir;
 
+    /**
+     * Embedded Solr server used for {@link #performCVFold(File, int, int, int, boolean)}
+     * if no ManagedSolrServer is present (e.g. when running outside of OSGI).
+     * Lazily initialised relative to {@link #embeddedSolrServerDir} on the first
+     * call to performCVFold
+     */
+    private EmbeddedSolrServer __evaluationServer;
+
+    private File __evaluationServerDir;
+
     void configureEmbeddedSolrServerDir(File directory){
         embeddedSolrServerDir = directory;
     }
@@ -351,6 +361,16 @@ public class TopicClassificationEngine e
         if (trainingSetTracker != null) {
             trainingSetTracker.close();
         }
+        //shutdown the evaluation server and delete the data of the evaluation server
+        if(__evaluationServer != null){
+            try {
+                __evaluationServer.getCoreContainer().shutdown();
+            }catch (Exception e){
+              //ignore  
+            } finally {
+                FileUtils.deleteQuietly(__evaluationServerDir);
+            }
+        }
         context = null;
     }
 
@@ -1038,7 +1058,6 @@ public class TopicClassificationEngine e
         int updatedTopics = 0;
         // NOTE: The folder used to create the SolrServer used for CVFold
         //       is now created within the #embeddedSolrServerDir
-        File solrServerDir = new File(embeddedSolrServerDir,engineName + "-evaluation");
         try {
             evaluationRunning = true;
             int cvFoldCount = 3; // 3-folds CV is hardcoded for now
@@ -1047,11 +1066,8 @@ public class TopicClassificationEngine e
             // We will use the training set quite intensively, ensure that the index is packed and its
             // statistics are up to date
             getTrainingSet().optimize();
-            if(!solrServerDir.exists()){
-                FileUtils.forceMkdir(solrServerDir);
-            }
             for (int cvFoldIndex = 0; cvFoldIndex < cvIterationCount; cvFoldIndex++) {
-                updatedTopics = performCVFold(solrServerDir, cvFoldIndex, cvFoldCount, cvIterationCount,
+                updatedTopics = performCVFold(cvFoldIndex, cvFoldCount, cvIterationCount,
                     incremental);
             }
             SolrServer solrServer = getActiveSolrServer();
@@ -1063,14 +1079,13 @@ public class TopicClassificationEngine e
         } catch (SolrServerException e) {
             throw new ClassifierException(e);
         } finally {
-            FileUtils.deleteQuietly(solrServerDir);
+            FileUtils.deleteQuietly(__evaluationServerDir);
             evaluationRunning = false;
         }
         return updatedTopics;
     }
 
-    protected int performCVFold(File tempFolder,
-                                int cvFoldIndex,
+    protected int performCVFold(int cvFoldIndex,
                                 int cvFoldCount,
                                 int cvIterations,
                                 boolean incremental) throws ConfigurationException,
@@ -1089,10 +1104,15 @@ public class TopicClassificationEngine e
                 classifier.bindManagedSolrServer(managedSolrServer);
                 classifier.activate(context, getCanonicalConfiguration(engineName + "-evaluation"));
             } else {
-                // non-OSGi runtime, need to do the setup manually
-                EmbeddedSolrServer evaluationServer = EmbeddedSolrHelper.makeEmbeddedSolrServer(tempFolder,
-                    "evaluationclassifierserver", "default-topic-model", "default-topic-model");
-                classifier.configure(getCanonicalConfiguration(evaluationServer));
+                if(__evaluationServer == null){
+                    __evaluationServerDir = new File(embeddedSolrServerDir,engineName + "-evaluation");
+                    if(!__evaluationServerDir.exists()){
+                        FileUtils.forceMkdir(__evaluationServerDir);
+                    }
+                    __evaluationServer = EmbeddedSolrHelper.makeEmbeddedSolrServer(__evaluationServerDir,
+                        "evaluationclassifierserver", "default-topic-model", "default-topic-model");
+                }
+                classifier.configure(getCanonicalConfiguration(__evaluationServer));
             }
         } catch (Exception e) {
             throw new ClassifierException(e);

Modified: stanbol/trunk/enhancement-engines/topic/engine/src/test/java/org/apache/stanbol/enhancer/engine/topic/TopicEngineTest.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancement-engines/topic/engine/src/test/java/org/apache/stanbol/enhancer/engine/topic/TopicEngineTest.java?rev=1450765&r1=1450764&r2=1450765&view=diff
==============================================================================
--- stanbol/trunk/enhancement-engines/topic/engine/src/test/java/org/apache/stanbol/enhancer/engine/topic/TopicEngineTest.java (original)
+++ stanbol/trunk/enhancement-engines/topic/engine/src/test/java/org/apache/stanbol/enhancer/engine/topic/TopicEngineTest.java Wed Feb 27 12:59:55 2013
@@ -137,6 +137,7 @@ public class TopicEngineTest extends Emb
         classifierSolrServer = null;
         trainingSetSolrServer = null;
         trainingSet = null;
+        classifier.deactivate(null);
     }
 
     protected void loadSampleTopicsFromTSV() throws IOException, SolrServerException {