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]

Reply via email to