Exemplo n.º 1
0
  public function updateLuceneIndex( &$index = null )
  {

    $index = ($index) ? $index : dsPersonTable::getLuceneIndex();
    //$index = dsPersonTable::getLuceneIndex();
   
    // remove existing entries
    foreach ($index->find('pk:'.$this->getId()) as $hit)
    {
      $index->delete($hit->id);
    }

    // don't index deleted persons
    // obsolete when not using soft-delete
    /*
    if ($this->getDeletedAt())
    {
      return;
    }
    */
    
    $doc = new Zend_Search_Lucene_Document();
   
    // store person primary key to identify it in the search results
    $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', $this->getId()));

    // index job fields
    $doc->addField(Zend_Search_Lucene_Field::UnStored('firstname', $this->getFirstname(), 'utf-8'));
    $doc->addField(Zend_Search_Lucene_Field::UnStored('lastname',  $this->getLastname(), 'utf-8'));
    $doc->addField(Zend_Search_Lucene_Field::UnStored('email',     $this->getEmail(), 'utf-8'));
    $doc->addField(Zend_Search_Lucene_Field::UnStored('phone',     $this->getPhone(), 'utf-8'));
    $doc->addField(Zend_Search_Lucene_Field::UnStored('city',      $this->getCity(), 'utf-8'));
    $doc->addField(Zend_Search_Lucene_Field::UnStored('street',    $this->getStreet(), 'utf-8'));
    $doc->addField(Zend_Search_Lucene_Field::UnStored('birthday',  $this->getBirthday(), 'utf-8'));
    

    /// CREATING ERROR IN TASK ....


    // add job to the index
    $index->addDocument($doc);
    $index->commit();

    unset( $doc );

  }
  protected function execute($arguments = array(), $options = array())
  {

    // $this->logBlock('DISABLED.', 'ERROR');



    // sfContext::createInstance($this->configuration);
    
    $databaseManager = new sfDatabaseManager($this->configuration);
   
   //var_dump( $this->configuration);


    //$connection = $databaseManager->getDatabase(  )->getConnection();


    // session_write_close(); //now close it, 

   
    // get all contacts
    // loop
    // with:  $contact->updateLuceneIndex()



    // cleanup Lucene index
    $index = dsPersonTable::getLuceneIndex();
   
  
    $q = Doctrine_Core::getTable('dsPerson')
          ->createQuery('a');



   //$q = Doctrine_Query::create();


   //   ->from('dsPerson a')
   //   ->where('j.expires_at < ?', date('Y-m-d'));
   
   
    $contacts = $q->execute();


    $this->logSection('%', sprintf('%d contacts to re-index', $contacts->count() ) );


    foreach ($contacts as $contact)
    {
          $this->logSection('index', $contact ); // ." - memory ". memory_get_usage() 
          $contact->updateLuceneIndex( $index );
          // unset( $contact );
    }
   
   
    //$index->optimize();
   
    $this->logSection('done', 'Rebuilt and optimized the Addressbook index');
   
    // Remove stale jobs
    // $nb = Doctrine_Core::getTable('JobeetJob')->cleanup($options['days']);
   
    // $this->logSection('doctrine', sprintf('Removed %d stale jobs', $nb));
  }