Author: rwesten
Date: Tue Dec 17 19:51:29 2013
New Revision: 1551671
URL: http://svn.apache.org/r1551671
Log:
fixes for STANBOL-1240, STANBOL-1241 and STANBOL-1242 - see issues for details;
also improved logging
Modified:
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngine.java
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngineComponent.java
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/IndexConfiguration.java
Modified:
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngine.java
URL:
http://svn.apache.org/viewvc/stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngine.java?rev=1551671&r1=1551670&r2=1551671&view=diff
==============================================================================
---
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngine.java
(original)
+++
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngine.java
Tue Dec 17 19:51:29 2013
@@ -136,11 +136,19 @@ public class FstLinkingEngine implements
public int canEnhance(ContentItem ci) throws EngineException {
log.trace("canEnhancer {}", ci.getUri());
String language = getLanguage(this, ci, false);
+ //(1) check if the language is enabled by the config
if (language == null ||
!indexConfig.getFstConfig().isLanguage(language)) {
log.debug("Engine {} ignores ContentItem {} becuase language {} is
not condigured.",
new Object[] {getName(), ci.getUri(), language});
return CANNOT_ENHANCE;
}
+ //(2) check if we have a FST model for the language
+ if(indexConfig.getCorpus(language) == null && //for the language
+ indexConfig.getDefaultCorpus() == null){ //a default
model
+ log.debug("Engine {} ignores ContentItem {} becuase no FST modles
for language {} "
+ + "are available", new Object[] {getName(),
ci.getUri(), language});
+ return CANNOT_ENHANCE;
+ }
// we need a detected language, the AnalyzedText contentPart with
// Tokens.
AnalysedText at = getAnalysedText(this, ci, false);
Modified:
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngineComponent.java
URL:
http://svn.apache.org/viewvc/stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngineComponent.java?rev=1551671&r1=1551670&r2=1551671&view=diff
==============================================================================
---
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngineComponent.java
(original)
+++
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/FstLinkingEngineComponent.java
Tue Dec 17 19:51:29 2013
@@ -493,6 +493,7 @@ public class FstLinkingEngineComponent {
@Override
public void removedService(ServiceReference reference, Object
service) {
+ log.info(" ... SolrCore for {} was removed!",
indexReference);
updateEngineRegistration(solrServerTracker.getServiceReference(), null);
super.removedService(reference, service);
}
@@ -500,6 +501,7 @@ public class FstLinkingEngineComponent {
@Override
public void modifiedService(ServiceReference reference, Object
service) {
+ log.info(" ... SolrCore for {} was updated!",
indexReference);
updateEngineRegistration(solrServerTracker.getServiceReference(), null);
super.modifiedService(reference, service);
}
@@ -511,6 +513,7 @@ public class FstLinkingEngineComponent {
log.warn("Multiple SolrServer for IndexLocation {}
available!",
indexReference);
} else {
+ log.info(" ... SolrCore for {} becomes available!",
indexReference);
updateEngineRegistration(reference, server);
}
return server;
@@ -535,6 +538,7 @@ public class FstLinkingEngineComponent {
* @param server the SolrServer (or <code>null</code>
*/
protected void updateEngineRegistration(ServiceReference reference,
SolrServer server) {
+ log.info(" ... updateEngineRegistration for {}:
{}",getClass().getSimpleName(), engineName);
if(reference != null && server == null){
server = solrServerTracker.getService(reference);
}
@@ -545,7 +549,7 @@ public class FstLinkingEngineComponent {
synchronized (this) { //init one after the other in case of multiple
calls
SolrCore core;
IndexConfiguration indexConfig; // the indexConfig build by this
call
- try {
+ try { //try to init - finally unregisterEngine
if(bundleContext == null){ //already deactivated
return; //NOTE: unregistering is done in finally block
}
@@ -560,6 +564,8 @@ public class FstLinkingEngineComponent {
core = null;
}
if(core == null){ //no SolrCore
+ log.info(" - SolrCore {} present", this.solrCore == null
?
+ "not yet" : "no longer");
return; //NOTE: unregistering is done in finally block
} //else - we do have a SolrCore
//File fstDir = new File(dataDir,"fst");
@@ -580,18 +586,14 @@ public class FstLinkingEngineComponent {
indexConfig.setSkipAltTokens(skipAltTokensConfig);
}
//create a new searcher for creating FSTs
- boolean foundCorpus;
- try {
- foundCorpus = indexConfig.activate();
- }catch (RuntimeException e) { //in case of any excpetion
- unregisterEngine(); //unregister current engine and clean
up
- throw e; //re-throw
- }
- if(!foundCorpus){
- unregisterEngine(); //unregister current engine and clean
up
- throw new IllegalStateException("Processing of the FST
configuration " +
- "was not successfull for any language. See WARN
level loggings " +
- "for more details!");
+ if(!indexConfig.activate()){
+ log.warn("Processing of the FST configuration was not
successfull "
+ + "for any language. See WARN level loggings for more
details!");
+ log.warn(" ... FstLinkingEnigne wiht name {} will be
registered but"
+ + "be inactive as there seam to be no data for linking
available"
+ + "in the SolrCore {} (dir: {})",
+ new Object []{engineName, core.getName(),
+ core.getCoreDescriptor().getInstanceDir()});
} else { //some FST corpora initialised
if(log.isInfoEnabled()){ //log the initialised languages
Set<String> langSet = new
HashSet<String>(indexConfig.getCorpusLanguages());
@@ -606,7 +608,7 @@ public class FstLinkingEngineComponent {
}
} finally {
//in any case (even an Exception) ensure that the current
- //engine registration is unregistered and the currentyl used
+ //engine registration is unregistered and the currently used
//SolrCore is unregistered!
unregisterEngine();
}
@@ -624,8 +626,12 @@ public class FstLinkingEngineComponent {
defaultLanguage = ""; //FST uses an empty string for the
default
}
CorpusInfo defaultCoprous = indexConfig.getCorpus(defaultLanguage);
- log.info(" ... set '{}' as default FST Corpus: {}",
defaultCoprous.language, defaultCoprous);
- indexConfig.setDefaultCorpus(defaultCoprous);
+ if(defaultCoprous != null){
+ log.info(" ... set '{}' as default FST Corpus: {}",
defaultCoprous.language, defaultCoprous);
+ indexConfig.setDefaultCorpus(defaultCoprous);
+ } else {
+ log.info(" ... no corpus for default language {} available",
defaultCoprous);
+ }
//set the index configuration to the field;
this.indexConfig = indexConfig;
FstLinkingEngine engine = new FstLinkingEngine(engineName,
indexConfig,
@@ -633,6 +639,7 @@ public class FstLinkingEngineComponent {
String[] services = new String [] {
EnhancementEngine.class.getName(),
ServiceProperties.class.getName()};
+ log.info(" ... register {}: {}",
engine.getClass().getSimpleName(),engineName);
this.engineRegistration =
bundleContext.registerService(services,engine, engineMetadata);
this.solrServerReference = reference;
this.solrCore = core;
@@ -680,6 +687,7 @@ public class FstLinkingEngineComponent {
//use local copies for method calls to avoid concurrency issues
ServiceRegistration engineRegistration = this.engineRegistration;
if(engineRegistration != null){
+ log.info(" ... unregister Lucene FSTLinkingEngine {}",engineName);
engineRegistration.unregister();
this.engineRegistration = null; //reset the field
}
@@ -737,6 +745,7 @@ public class FstLinkingEngineComponent {
*/
@Deactivate
protected void deactivate(ComponentContext ctx) {
+ log.info(" ... deactivate {}: {}",getClass().getSimpleName(),
engineName);
if(solrServerTracker != null){
//closing the tracker will also cause registered engines to be
//unregistered as service (see #updateEngineRegistration())
Modified:
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/IndexConfiguration.java
URL:
http://svn.apache.org/viewvc/stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/IndexConfiguration.java?rev=1551671&r1=1551670&r2=1551671&view=diff
==============================================================================
---
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/IndexConfiguration.java
(original)
+++
stanbol/branches/release-0.12/enhancement-engines/lucenefstlinking/src/main/java/org/apache/stanbol/enhancer/engines/lucenefstlinking/IndexConfiguration.java
Tue Dec 17 19:51:29 2013
@@ -399,7 +399,7 @@ public class IndexConfiguration {
if(fstDirectory == null){
fstDirectory = new File(index.getDataDir(),"fst");
}
- log.info("> process FST config for {} (FST dir: {})", index.getName(),
+ log.debug("> process FST config for {} (FST dir: {})", index.getName(),
fstDirectory.getAbsolutePath());
//init the fstDirectory
if(fstDirectory.isFile()){
@@ -411,7 +411,7 @@ public class IndexConfiguration {
IndexSchema schema = index.getLatestSchema();
boolean foundCorpus = false;
//(0) get basic parameters of the default configuration
- log.info(" - default config");
+ log.debug(" - default config");
Map<String,String> defaultParams = fstConfig.getDefaultParameters();
String fstName = defaultParams.get(IndexConfiguration.PARAM_FST);
String indexField = defaultParams.get(IndexConfiguration.PARAM_FIELD);