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 {