source: cpc/trunk/project/lib/task/indexSolrTask.class.php @ 1319

Last change on this file since 1319 was 1319, checked in by teymour, 11 years ago

Indexation des commentaires
+ amélioration de la tache d'indexation

File size: 1.7 KB
Line 
1<?php
2
3class indexSolrTask extends sfBaseTask
4{
5  private $file_conf;
6 
7  private function writeState() 
8  {
9    $fh = fopen($this->file_conf, 'w');
10    fwrite($fh, serialize($this->state));
11    fclose($fh);
12  }
13
14  protected function configure()
15  {
16    $this->namespace = 'index';
17    $this->name = 'Solr';
18    $this->briefDescription = 'Index db value on solr';
19    $this->addOption('env', null, sfCommandOption::PARAMETER_OPTIONAL, 'Changes the environment this task is run in', 'test');
20    $this->addOption('app', null, sfCommandOption::PARAMETER_OPTIONAL, 'Changes the environment this task is run in', 'frontend');
21
22    $this->file_conf = sys_get_temp_dir().DIRECTORY_SEPARATOR."reindex_slor.db";
23    $this->state = array();
24    if (file_exists($this->file_conf)) {
25      $this->state = unserialize(file_get_contents($this->file_conf));
26    }
27  }
28 
29  protected function execute($arguments = array(), $options = array())
30  {
31    $dir = dirname(__FILE__).'/../../batch/commission/out/';
32    $manager = new sfDatabaseManager($this->configuration);   
33
34    $solr = new SolrConnector();
35
36    $solr->deleteAll();
37
38    foreach(array("Parlementaire", "Commentaire", "QuestionEcrite", "Amendement", "Intervention") as $table) {
39      while (1) {
40        $q = Doctrine::getTable($table)
41          ->createQuery('o')
42          ->orderBy('o.id ASC');
43        if ($this->state[$table]) {
44          $q->where('o.id > ?', $this->state[$table]);
45        }
46        $q->limit(100);
47        if (!$q->count()) {
48          echo "Count DONE\n";
49          break;
50        }
51       
52        foreach($q->execute() as $o) {
53          echo get_class($o).' '.$o->id."\n";
54          $o->Save();
55          $this->state[$table] = $o->id;
56        }
57        $solr->updateFromCommands();
58        $this->writeState();
59      }
60    }
61    unlink($this->file_conf);
62  }
63 
64}
Note: See TracBrowser for help on using the repository browser.