package org.fastcatsearch.ir.settings;
import org.apache.lucene.analysis.Analyzer;
import org.fastcatsearch.ir.analysis.AnalyzerFactory;
import org.fastcatsearch.ir.analysis.DefaultAnalyzerFactory;
import org.fastcatsearch.util.DynamicClassLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class AnalyzerFactoryLoader {
private static Logger logger = LoggerFactory.getLogger(AnalyzerFactoryLoader.class);
public static AnalyzerFactory load(String analyzerClassName){
if(analyzerClassName!=null) {
analyzerClassName = analyzerClassName.trim();
}
String factoryClassName = analyzerClassName+"Factory";
Class<?> analyzerFactoryClass = DynamicClassLoader.loadClass(factoryClassName);
AnalyzerFactory factory = null;
if(analyzerFactoryClass == null){
Class<Analyzer> analyzerClass = (Class<Analyzer>) DynamicClassLoader.loadClass(analyzerClassName);
if(analyzerClass == null){
logger.error("Analyzer {}를 생성할수 없습니다.", analyzerClassName);
}else{
factory = new DefaultAnalyzerFactory(analyzerClass);
}
}else{
try {
factory = (AnalyzerFactory) analyzerFactoryClass.newInstance();
} catch (Exception e) {
logger.error("AnalyzerFactory {}를 생성할수 없습니다.", factoryClassName);
}
}
return factory;
}
}