protected function execute($arguments = array(), $options = array())
 {
     $app = $arguments['application'];
     $this->checkAppExists($app);
     $this->standardBootstrap($app, $options['env']);
     $this->createConfigFiles(sfLucene::getConfig($this->configuration));
 }
 protected function getSearchInstances($node)
 {
     static $instances;
     $class = get_class($node);
     if (!isset($instances)) {
         $instances = array();
     }
     if (!isset($instances[$class])) {
         $config = sfLucene::getConfig();
         foreach ($config as $name => $item) {
             if (isset($item['models'][$class])) {
                 foreach ($item['index']['cultures'] as $culture) {
                     $instances[$class][] = sfLucene::getInstance($name, $culture);
                 }
             }
         }
     }
     return $instances[$class];
 }
 /**
  * Returns an array of the index paths to be removed by the garbage cleanup routine.
  */
 public static function getDirtyIndexRemains()
 {
     $location = sfConfig::get('sf_data_dir') . DIRECTORY_SEPARATOR . 'index';
     $length = strlen($location) + 1;
     $config = sfLucene::getConfig();
     $remove = array();
     $namesRemoved = array();
     foreach (sfFinder::type('dir')->mindepth(0)->maxdepth(0)->in($location) as $directory) {
         $name = substr($directory, $length);
         if (!isset($config[$name])) {
             $namesRemoved[] = $name;
             $remove[] = $directory;
         }
     }
     foreach (sfFinder::type('dir')->mindepth(1)->maxdepth(1)->in($location) as $directory) {
         $interested = substr($directory, $length);
         list($name, $culture) = explode('/', $interested);
         if (!in_array($name, $namesRemoved) && !in_array($culture, $config[$name]['index']['cultures'])) {
             $remove[] = $directory;
         }
     }
     return $remove;
 }
 /**
  * @see sfTask
  */
 protected function execute($arguments = array(), $options = array())
 {
     $config = sfLucene::getConfig();
     $query = $arguments['query'];
     // check and reduce indexes
     if ($options['index'] !== null) {
         if (!in_array($options['index'], array_keys($config))) {
             throw new Exception('Index %s not exist', $options['index']);
         }
         $config = array($config[$options['index']]);
     }
     // build the lucene criteria
     $criteria = sfLuceneCriteria::newInstance()->addPhrase($query)->setOffset($options['start'])->setLimit($options['limit']);
     // walk over the indexes
     foreach ($config as $index => $indexConfig) {
         // check culture
         $cultures = $indexConfig['index']['cultures'];
         if ($options['culture'] !== null) {
             if (!in_array($options['culture'], $cultures)) {
                 //TODO: change to log error
                 throw new Exception(sprintf('Culture %s is not configurate for index %s', $options['culture'], $index));
             }
             $cultures = array($options['culture']);
         }
         $this->log(sprintf('search for `%s` from %u to %u', $query, $options['start'], $options['limit']));
         // walk over the cultures
         foreach ($cultures as $culture) {
             // get lucene instance and retrieve the results
             $results = sfLucene::getInstance($index, $culture)->friendlyFind($criteria);
             $this->log(sprintf('found %u results in index `%s` with culture `%s`', count($results), $index, $culture));
             foreach ($results as $result) {
                 $this->logSection('result ', sprintf('%s %s (%u%%)', $result->getInternalModel(), $result->getInternalTitle(), $result->getScore()));
             }
         }
     }
 }
Ejemplo n.º 5
0
$t->isa_ok($f, 'sfParameterHolder', 'model property "fields" is a sfParameterHolder');
$t->is($f->getNames(), array('id', 'title', 'description'), 'model property "fields" contains all the fields');
$t->is($f->get('id')->get('type'), 'unindexed', 'field property "type" is the type');
$t->is($f->get('id')->get('boost'), 1, 'field property "boost" is the boost');
$t->diag('testing ::getConfig()');
$cswap = $app->cswap($luceneade->config_dir . '/search.yml')->write('<?php $foo = 42;');
try {
    $e = $t->exception('::getConfig() fails if search.yml is corrupt');
    sfLucene::getConfig();
    $e->no();
} catch (Exception $ex) {
    $e->caught($ex);
}
$cswap->write('<?php $config = array(1, 2, 3);');
try {
    $t->is(sfLucene::getConfig(), array(1, 2, 3), '::getConfig() returns the $config variable in the search.yml file');
} catch (Exception $e) {
    $t->fail('::getConfig() returns the $config variable in the search.yml file');
}
$cswap->restore();
$t->diag('testing ->getCategoriesHarness()');
$cats = $lucene->getCategoriesHarness();
$t->isa_ok($cats, 'sfLuceneCategories', '->getCategories() returns an instance of sfLuceneCategories');
$t->ok($lucene->getCategoriesHarness() === $cats, '->getCategories() is a singleton');
$t->diag('testing ->getIndexerFactory()');
$indexer = $lucene->getIndexerFactory();
$t->isa_ok($indexer, 'sfLuceneIndexerFactory', '->getIndexer() returns an instance of sfLuceneIndexerFactory');
$t->diag('testing ->getContext()');
$t->isa_ok($lucene->getContext(), 'sfContext', '->getContext() returns an instance of sfContext');
$t->is($lucene->getContext(), sfContext::getInstance(), '->getContext() returns the same context');
$t->diag('testing ->configure()');
 protected function getSearchInstances($node)
 {
     $class = get_class($node);
     if (!isset(self::$instances[$class])) {
         $config = sfLucene::getConfig();
         $configuration = sfProjectConfiguration::getActive();
         foreach ($config as $name => $item) {
             $inheritance_class = $this->getInheritanceClass($node, $item);
             if (!$inheritance_class) {
                 throw new sfException('Cannot find the correct inheritance class for the object type : ' . get_class($node));
             }
             if (isset($item['models'][$inheritance_class])) {
                 foreach ($item['index']['cultures'] as $culture) {
                     self::$instances[$class][] = sfLucene::getInstance($name, $culture, $configuration);
                 }
             }
         }
     }
     return self::$instances[$class];
 }
 /**
  * Finds all instances of sfLucene that this model appears in.  This does
  * not return the instance if the model does not exist in it.
  */
 protected function getSearchInstances($node)
 {
     static $instances;
     $class = get_class($node);
     if (!isset($instances)) {
         $instances = array();
     }
     // continue only if we have not already cached the instances for this class
     if (!isset($instances[$class])) {
         $instances[$class] = array();
         $config = sfLucene::getConfig();
         // go through each instance
         foreach ($config as $name => $item) {
             if (isset($item['models'][$class])) {
                 foreach ($item['index']['cultures'] as $culture) {
                     // store instance
                     $instances[$class][] = sfLucene::getInstance($name, $culture, sfProjectConfiguration::getActive());
                 }
             }
         }
     }
     if (count($instances[$class]) == 0) {
         throw new sfLuceneException('No sfLucene instances could be found for "' . $class . '"');
     }
     return $instances[$class];
 }