Index: src/java/org/apache/jetspeed/services/search/lucene/LuceneSearchService.java =================================================================== RCS file: /home/cvspublic/jakarta-jetspeed/src/java/org/apache/jetspeed/services/search/lucene/LuceneSearchService.java,v retrieving revision 1.11 diff -u -r1.11 LuceneSearchService.java --- src/java/org/apache/jetspeed/services/search/lucene/LuceneSearchService.java 19 May 2004 21:04:41 -0000 1.11 +++ src/java/org/apache/jetspeed/services/search/lucene/LuceneSearchService.java 16 Jun 2004 15:35:59 -0000 @@ -85,6 +85,10 @@ private File rootDir = null; private String indexRoot = null; + private static final String DEFAULT_ANALYZER_CLASS_NAME = "org.apache.lucene.analysis.standard.StandardAnalyzer"; + private static final String CONFIG_ANALYZER_CLASS_NAME = "analyzer"; + private String analyzerClassName = null; + /** * This is the early initialization method called by the * Turbine Service framework @@ -192,7 +196,7 @@ { try { - IndexWriter indexWriter = new IndexWriter(rootDir, new StandardAnalyzer(), true); + IndexWriter indexWriter = new IndexWriter(rootDir, newAnalyzer(), true); indexWriter.close(); indexWriter = null; logger.info("Created Lucene Index in " + rootDir.getPath()); @@ -204,6 +208,9 @@ } } + // Get analyze class name + analyzerClassName = serviceConf.getString(CONFIG_ANALYZER_CLASS_NAME, DEFAULT_ANALYZER_CLASS_NAME); + //Mark that we are done setInit(true); } @@ -231,7 +238,7 @@ return null; } - Analyzer analyzer = new StandardAnalyzer(); + Analyzer analyzer = newAnalyzer(); String[] searchFields = {ParsedObject.FIELDNAME_CONTENT, ParsedObject.FIELDNAME_DESCRIPTION, ParsedObject.FIELDNAME_FIELDS, ParsedObject.FIELDNAME_KEY, ParsedObject.FIELDNAME_KEYWORDS, ParsedObject.FIELDNAME_LANGUAGE, @@ -407,7 +414,7 @@ IndexWriter indexWriter; try { - indexWriter = new IndexWriter(rootDir, new StandardAnalyzer(), false); + indexWriter = new IndexWriter(rootDir, newAnalyzer(), false); } catch (IOException e) { @@ -620,7 +627,7 @@ indexReader.close(); - IndexWriter indexWriter = new IndexWriter(rootDir, new StandardAnalyzer(), false); + IndexWriter indexWriter = new IndexWriter(rootDir, newAnalyzer(), false); indexWriter.optimize(); indexWriter.close(); @@ -683,4 +690,25 @@ return false; } + + private Analyzer newAnalyzer() { + Analyzer rval = null; + + try { + Class analyzerClass = Class.forName(analyzerClassName); + rval = (Analyzer) analyzerClass.newInstance(); + } catch(InstantiationException e) { + logger.error("InstantiationException", e); + } catch(ClassNotFoundException e) { + logger.error("ClassNotFoundException", e); + } catch(IllegalAccessException e) { + logger.error("IllegalAccessException", e); + } + + if(rval == null) { + rval = new StandardAnalyzer(); + } + + return rval; + } }