/** * Closes the index searcher for this index.<p> * * @see #indexSearcherOpen(String) */ protected synchronized void indexSearcherClose() { indexSearcherClose(m_indexSearcher); }
/** * Initializes the Lucene index searcher for this index.<p> * * Use {@link #getSearcher()} in order to obtain the searcher that has been opened.<p> * * In case there is an index searcher still open, it is closed first.<p> * * For performance reasons, one instance of the Lucene index searcher should be kept * for all searches. However, if the index is updated or changed * this searcher instance needs to be re-initialized.<p> * * @param path the path to the index directory */ protected synchronized void indexSearcherOpen(String path) { // first close the current searcher instance indexSearcherClose(); // create the index searcher try { if (IndexReader.indexExists(path)) { IndexReader reader = new LazyContentReader(IndexReader.open(path)); m_searcher = new IndexSearcher(reader); m_displayFilters = new HashMap<String, Filter>(); } } catch (IOException e) { LOG.error(Messages.get().getBundle().key(Messages.ERR_INDEX_SEARCHER_1, getName()), e); } }
indexSearcherClose(oldSearcher);
/** * Shuts down the search index.<p> * * This will close the local Lucene index searcher instance.<p> */ public void shutDown() { // close the index writer if (m_indexWriter != null) { try { m_indexWriter.commit(); m_indexWriter.close(); } catch (IOException e) { LOG.error( Messages.get().getBundle().key(Messages.LOG_IO_INDEX_WRITER_CLOSE_2, getPath(), getName()), e); } } indexSearcherClose(); if (m_analyzer != null) { m_analyzer.close(); } if (CmsLog.INIT.isInfoEnabled()) { CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_SHUTDOWN_INDEX_1, getName())); } }
/** * Reopens the index search reader for this index, required after the index has been changed.<p> * * @see #indexSearcherOpen(String) */ protected synchronized void indexSearcherUpdate() { IndexSearcher oldSearcher = m_indexSearcher; if ((oldSearcher != null) && (oldSearcher.getIndexReader() != null)) { // in case there is an index searcher available close it try { if (oldSearcher.getIndexReader() instanceof DirectoryReader) { IndexReader newReader = DirectoryReader.openIfChanged( (DirectoryReader)oldSearcher.getIndexReader()); if (newReader != null) { m_indexSearcher = new IndexSearcher(newReader); m_indexSearcher.setSimilarity(m_sim); indexSearcherClose(oldSearcher); } } } catch (Exception e) { LOG.error(Messages.get().getBundle().key(Messages.ERR_INDEX_SEARCHER_REOPEN_1, getName()), e); } } else { // make sure we end up with an open index searcher / reader indexSearcherOpen(getPath()); } }
index.indexSearcherClose(); index.removeIndexBackup(backup);
index.indexSearcherClose(); index.removeIndexBackup(backup);