From 39b1d19f3b54c1c930f794513f178ec992e1750e Mon Sep 17 00:00:00 2001 From: Peter Dietz Date: Fri, 5 Nov 2010 22:45:45 +0000 Subject: [PATCH] Added ability to perform Solr optimize on the search/discovery core. Can be run with ./dspace update-discovery-index -o Issue #DS-615 - Ability to perform maintenance on SOLR with solr.optimize git-svn-id: http://scm.dspace.org/svn/repo/dspace/trunk@5751 9c30dcfa-912a-0410-8fc2-9e0234be79fd --- .../org/dspace/discovery/IndexClient.java | 6 ++++++ .../org/dspace/discovery/IndexingService.java | 2 ++ .../org/dspace/discovery/SolrServiceImpl.java | 19 +++++++++++++++++++ dspace/CHANGES | 1 + 4 files changed, 28 insertions(+) diff --git a/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/IndexClient.java b/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/IndexClient.java index b0506de736..40e3e17dfb 100644 --- a/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/IndexClient.java +++ b/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/IndexClient.java @@ -109,6 +109,9 @@ public class IndexClient { options.addOption(OptionBuilder.isRequired(false).withDescription( "print this help message").create("h")); + options.addOption(OptionBuilder.isRequired(false).withDescription( + "optimize search solr core").create("o")); + try { line = new PosixParser().parse(options, args); } catch (Exception e) { @@ -141,6 +144,9 @@ public class IndexClient { } else if (line.hasOption("b")) { log.info("(Re)building index from scratch."); indexer.createIndex(context); + } else if (line.hasOption("o")) { + log.info("Optimizing search core."); + indexer.optimize(); } else { log.info("Updating and Cleaning Index"); indexer.cleanIndex(line.hasOption("f")); diff --git a/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/IndexingService.java b/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/IndexingService.java index f58d9e265a..b2551c0bc0 100644 --- a/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/IndexingService.java +++ b/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/IndexingService.java @@ -80,4 +80,6 @@ public interface IndexingService { void cleanIndex(boolean force) throws IOException, SQLException, SearchServiceException; + + void optimize(); } diff --git a/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/SolrServiceImpl.java b/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/SolrServiceImpl.java index 2528f1e4ee..164bd6ef8f 100644 --- a/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/SolrServiceImpl.java +++ b/dspace-discovery/dspace-discovery-provider/src/main/java/org/dspace/discovery/SolrServiceImpl.java @@ -423,6 +423,25 @@ public class SolrServiceImpl implements SearchService, IndexingService { + } + + /** + * Maintenance to keep a SOLR index efficient. + * Note: This might take a long time. + */ + public void optimize() { + try { + long start = System.currentTimeMillis(); + System.out.println("SOLR Search Optimize -- Process Started:"+start); + getSolr().optimize(); + long finish = System.currentTimeMillis(); + System.out.println("SOLR Search Optimize -- Process Finished:"+finish); + System.out.println("SOLR Search Optimize -- Total time taken:"+(finish-start) + " (ms)."); + } catch (SolrServerException sse) { + System.err.println(sse.getMessage()); + } catch (IOException ioe) { + System.err.println(ioe.getMessage()); + } } // ////////////////////////////////// diff --git a/dspace/CHANGES b/dspace/CHANGES index b2757bac3e..d069652290 100644 --- a/dspace/CHANGES +++ b/dspace/CHANGES @@ -57,6 +57,7 @@ (Peter Dietz) - [DS-192] Bitstreams should be returned ordered - [DS-549] Added anchors in XMLUI +- [DS-615] Added ability to perform Solr optimize on the search/discovery core. (Stuart Lewis, Christophe Dupriez) - [DS-686] Incorrect use of UTF8 in DSpaceCSV