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())); } } } }
$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]; }