jford 2004/06/19 13:29:17
Modified: src/java/org/apache/jetspeed/services/search/lucene
LuceneSearchService.java
Log:
Applied Enrique Lara's patch to allow for different analyzers
PR: JS1-491
Submitted by: Enrique Lara
Revision Changes Path
1.12 +65 -11
jakarta-jetspeed/src/java/org/apache/jetspeed/services/search/lucene/LuceneSearchService.java
Index: LuceneSearchService.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/search/lucene/LuceneSearchService.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- LuceneSearchService.java 19 May 2004 21:04:41 -0000 1.11
+++ LuceneSearchService.java 19 Jun 2004 20:29:17 -0000 1.12
@@ -57,7 +57,6 @@
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.Query;
@@ -84,6 +83,10 @@
private static final String CONFIG_DIRECTORY = "directory";
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
@@ -181,6 +184,9 @@
}
}
}
+
+ //Get analyze class name
+ analyzerClassName = serviceConf.getString(CONFIG_ANALYZER_CLASS_NAME,
DEFAULT_ANALYZER_CLASS_NAME);
try
{
@@ -192,7 +198,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());
@@ -231,7 +237,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,
@@ -273,21 +279,48 @@
addFieldsToParsedObject(doc, result);
result.setScore(hits.score(counter));
-
result.setType(doc.getField(ParsedObject.FIELDNAME_TYPE).stringValue());
-
result.setKey(doc.getField(ParsedObject.FIELDNAME_KEY).stringValue());
-
result.setDescription(doc.getField(ParsedObject.FIELDNAME_DESCRIPTION).stringValue());
-
result.setTitle(doc.getField(ParsedObject.FIELDNAME_TITLE).stringValue());
-
result.setContent(doc.getField(ParsedObject.FIELDNAME_CLASSNAME).stringValue());
+ Field type = doc.getField(ParsedObject.FIELDNAME_TYPE);
+ if(type != null)
+ {
+ result.setType(type.stringValue());
+ }
+
+ Field key = doc.getField(ParsedObject.FIELDNAME_KEY);
+ if(key != null)
+ {
+ result.setKey(key.stringValue());
+ }
+
+ Field description =
doc.getField(ParsedObject.FIELDNAME_DESCRIPTION);
+ if(description != null)
+ {
+ result.setDescription(description.stringValue());
+ }
+
+ Field title = doc.getField(ParsedObject.FIELDNAME_TITLE);
+ if(title != null)
+ {
+ result.setTitle(title.stringValue());
+ }
+
+ Field content = doc.getField(ParsedObject.FIELDNAME_CLASSNAME);
+ if(content != null)
+ {
+ result.setContent(content.stringValue());
+ }
+
Field language = doc.getField(ParsedObject.FIELDNAME_LANGUAGE);
if (language != null)
{
result.setLanguage(language.stringValue());
}
+
Field classname = doc.getField(ParsedObject.FIELDNAME_CLASSNAME);
if (classname != null)
{
result.setClassName(classname.stringValue());
}
+
Field url = doc.getField(ParsedObject.FIELDNAME_URL);
if (url != null)
{
@@ -407,7 +440,7 @@
IndexWriter indexWriter;
try
{
- indexWriter = new IndexWriter(rootDir, new StandardAnalyzer(), false);
+ indexWriter = new IndexWriter(rootDir, newAnalyzer(), false);
}
catch (IOException e)
{
@@ -620,7 +653,7 @@
indexReader.close();
- IndexWriter indexWriter = new IndexWriter(rootDir, new
StandardAnalyzer(), false);
+ IndexWriter indexWriter = new IndexWriter(rootDir, newAnalyzer(),
false);
indexWriter.optimize();
indexWriter.close();
@@ -681,6 +714,27 @@
}
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;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]