Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }