1
0
mirror of synced 2025-03-26 18:03:49 +03:00
This commit is contained in:
zYne 2007-10-13 08:55:06 +00:00
parent 483cf72448
commit 780c0deb1b

View File

@ -34,7 +34,9 @@ class Doctrine_Search
{ {
protected $_options = array('generateFiles' => false, protected $_options = array('generateFiles' => false,
'className' => '%CLASS%Index', 'className' => '%CLASS%Index',
'generatePath' => false); 'generatePath' => false,
'batchUpdates' => false,
'pluginTable' => false);
public function __construct(array $options) public function __construct(array $options)
@ -51,7 +53,7 @@ class Doctrine_Search
if (isset($this->_options[$option])) { if (isset($this->_options[$option])) {
return $this->_options[$option]; return $this->_options[$option];
} }
throw new Doctrine_Search_Exception('Unknown option ' . $option); throw new Doctrine_Search_Exception('Unknown option ' . $option);
} }
@ -79,20 +81,24 @@ class Doctrine_Search
$class = $this->getOption('className'); $class = $this->getOption('className');
$name = $record->getTable()->getComponentName(); $name = $record->getTable()->getComponentName();
foreach ($fields as $field) { if ($this->_options['batchUpdates'] === true) {
$data = $record->get($field); $conn->insert(Doctrine::tableize($class), array('foreign_id' => $id));
} else {
$terms = $this->analyze($data); foreach ($fields as $field) {
$data = $record->get($field);
foreach ($terms as $pos => $term) {
$index = new $class(); $terms = $this->analyze($data);
$index->keyword = $term; foreach ($terms as $pos => $term) {
$index->position = $pos; $index = new $class();
$index->field = $field;
$index->$name = $record; $index->keyword = $term;
$index->position = $pos;
$index->save(); $index->field = $field;
$index->$name = $record;
$index->save();
}
} }
} }
} }
@ -209,6 +215,8 @@ class Doctrine_Search
eval($def); eval($def);
} }
$this->_options['pluginTable'] = $table->getConnection()->getTable($this->_options['className']);
return true; return true;
} }
} }