Index: src/java/org/apache/jetspeed/services/search/Search.java =================================================================== RCS file: /home/cvspublic/jakarta-jetspeed/src/java/org/apache/jetspeed/services/search/Search.java,v retrieving revision 1.5 diff -u -r1.5 Search.java --- src/java/org/apache/jetspeed/services/search/Search.java 23 Feb 2004 03:48:47 -0000 1.5 +++ src/java/org/apache/jetspeed/services/search/Search.java 2 Jul 2004 16:23:50 -0000 @@ -136,4 +136,14 @@ return true; } + + /** + * @return + */ + public static boolean optimize() + { + return getService().optimize(); + } + + } Index: src/java/org/apache/jetspeed/services/search/SearchService.java =================================================================== RCS file: /home/cvspublic/jakarta-jetspeed/src/java/org/apache/jetspeed/services/search/SearchService.java,v retrieving revision 1.3 diff -u -r1.3 SearchService.java --- src/java/org/apache/jetspeed/services/search/SearchService.java 23 Feb 2004 03:48:47 -0000 1.3 +++ src/java/org/apache/jetspeed/services/search/SearchService.java 2 Jul 2004 16:23:51 -0000 @@ -85,4 +85,12 @@ * @return */ public SearchResults search(String search); + + /** + * Optimize search indexes (optional operation). + * + * @return + */ + public boolean optimize() throws UnsupportedOperationException; + } 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.12 diff -u -r1.12 LuceneSearchService.java --- src/java/org/apache/jetspeed/services/search/lucene/LuceneSearchService.java 19 Jun 2004 20:29:17 -0000 1.12 +++ src/java/org/apache/jetspeed/services/search/lucene/LuceneSearchService.java 2 Jul 2004 16:23:51 -0000 @@ -88,6 +88,10 @@ private static final String CONFIG_ANALYZER_CLASS_NAME = "analyzer"; private String analyzerClassName = null; + private static final boolean DEFAULT_AUTO_OPTIMIZE = true; + private static final String CONFIG_AUTO_OPTIMIZE = "auto_optimize"; + private boolean doOptimize = DEFAULT_AUTO_OPTIMIZE; + /** * This is the early initialization method called by the * Turbine Service framework @@ -188,6 +192,9 @@ //Get analyze class name analyzerClassName = serviceConf.getString(CONFIG_ANALYZER_CLASS_NAME, DEFAULT_ANALYZER_CLASS_NAME); + //Whether to optimize automatically after an add/remove/update. + doOptimize = serviceConf.getBoolean(CONFIG_AUTO_OPTIMIZE, DEFAULT_AUTO_OPTIMIZE); + try { Searcher searcher = null; @@ -426,7 +433,6 @@ return add(c); } - /** * * @see org.apache.jetspeed.services.search.SearchService#add(java.lang.Collection) @@ -529,7 +535,10 @@ try { - indexWriter.optimize(); + if(doOptimize) + { + indexWriter.optimize(); + } } catch (IOException e) { @@ -612,7 +621,6 @@ return remove(c); } - /** * * @see org.apache.jetspeed.services.search.SearchService#remove(java.lang.Collection) @@ -653,10 +661,10 @@ indexReader.close(); - IndexWriter indexWriter = new IndexWriter(rootDir, newAnalyzer(), false); - indexWriter.optimize(); - indexWriter.close(); - + if(doOptimize) + { + optimize(); + } } catch (Exception e) { @@ -704,17 +712,41 @@ try { - // Add entries to index - add(c); - result = true; + if(result) + { + // Add entries to index + result = add(c); + } } catch (Throwable e) { logger.error("Exception", e); } - return false; + + + return result; + } + + public boolean optimize() + { + boolean result = false; + + try + { + IndexWriter indexWriter = new IndexWriter(rootDir, newAnalyzer(), false); + indexWriter.optimize(); + indexWriter.close(); + result = true; + } + catch (IOException e) + { + logger.error("Error while trying to optimize index."); + } + + return result; } + private Analyzer newAnalyzer() { Analyzer rval = null;