/** * Merges all segments together into new one * * Returns true on success and false if another optimization or auto-optimization process * is running now * * @return boolean */ public function optimize() { if (Zend_Search_Lucene_LockManager::obtainOptimizationLock($this->_directory) === false) { return false; } // Update segments list to be sure all segments are not merged yet by another process // // Segment merging functionality is concentrated in this class and surrounded // by optimization lock obtaining/releasing. // _updateSegments() refreshes segments list from the latest index generation. // So only new segments can be added to the index while we are merging some already existing // segments. // Newly added segments will be also included into the index by the _updateSegments() call // either by another process or by the current process with the commit() call at the end of _mergeSegments() method. // That's guaranteed by the serialisation of _updateSegments() execution using exclusive locks. $this->_updateSegments(); $this->_mergeSegments($this->_segmentInfos); Zend_Search_Lucene_LockManager::releaseOptimizationLock($this->_directory); return true; }
/** * Merges all segments together into new one * * Returns true on success and false if another optimization or auto-optimization process * is running now * * @return boolean */ public function optimize() { if (Zend_Search_Lucene_LockManager::obtainOptimizationLock($this->_directory) === false) { return false; } $this->_mergeSegments($this->_segmentInfos); Zend_Search_Lucene_LockManager::releaseOptimizationLock($this->_directory); return true; }