Есть вопрос по отношению создания индекса и его приёма.
У меня есть несколько несвязанных таблиц и хотелось бы сделать полный поиск по сайту при помощи lucene.
Всё сделал, как написано в примере по этой ссылке:
http://www.yiiframework.com/wiki/248/ad ... nd-lucene/
раотает хорошо, но как добавить в индекс для начала ещё одну таблицу в Controller/SearchController.php, а потом принять её в views/search/search.php
я пытался сделать так:
Контроллер:
Код: Выделить всё
/**
* Search index creation
*/
public function actionCreate()
{
$index = new Zend_Search_Lucene(Yii::getPathOfAlias('application.' . $this->_indexFiles), true);
$posts = User::model()->findAll();
foreach($posts as $post){
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Text('surname',
CHtml::encode($post->surname)
, 'utf-8')
);
$doc->addField(Zend_Search_Lucene_Field::Text('name',
CHtml::encode($post->name)
, 'utf-8')
);
$doc->addField(Zend_Search_Lucene_Field::Text('email',
CHtml::encode($post->email)
, 'utf-8')
);
$index->addDocument($doc);
}
$index->commit();
$books = Book::model()->findAll();
foreach($books as $book){
$document = new Zend_Search_Lucene_Document();
$document->addField(Zend_Search_Lucene_Field::Text('shortname',
CHtml::encode($book->shortname)
, 'utf-8')
);
$index->addDocument($document);
}
$index->commit();
echo 'Lucene index created';
}
Код: Выделить всё
<?php
$this->pageTitle=Yii::app()->name . ' - Search results';
$this->breadcrumbs=array(
'Search Results',
);
?>
<h3>Search Results for: "<?php echo CHtml::encode($term); ?>"</h3>
<?php if (!empty($results)): ?>
<?php foreach($results as $result): ?>
<p>Surname: <?php if(!empty($result->surname)) echo $result->surname; ?></p>
<p>Book: <?php if(!empty($result->shortname)) echo $result->shortname; ?></p>
<p>E-Mail: <?php if(!empty($result->email)) echo $result->email; ?></p>
<hr/>
<?php endforeach; ?>
<?php else: ?>
<p class="error">No results matched your search terms.</p>
<?php endif; ?>
не выводит названия результат поиска, а только правильное колличество найденого.
К примеру, если четыре совпадения фамилии, то он выводит четыре пустых повторений.
Что не так?