Здравейте,
Използвам следната търсачка …adding-search-to-yii… и всичко е наред стига само да се търси на латиница. При търсене на кирилица идват проблемите, докарах до едно положение, но резултатите продължават да излизат на маймуница. Ето и кода:
Котролата:
public function actionCreate()
{
$index = new Zend_Search_Lucene(Yii::getPathOfAlias('application.' . $this->_indexFiles), true);
$messages = Messages::model()->findAll();
foreach($messages as $message){
$mes = new Zend_Search_Lucene_Document();
$mes->addField(Zend_Search_Lucene_Field::Text('title',CHtml::encode($message->title), 'utf-8'));
$mes->addField(Zend_Search_Lucene_Field::Text('content',CHtml::encode($message->content), 'utf-8'));
$mes->addField(Zend_Search_Lucene_Field::Text('link',CHtml::encode($message->link), 'utf-8'));
$index->addDocument($mes);
}
$index->commit();
}
public function actionSearch()
{
Zend_Search_Lucene_Analysis_Analyzer::setDefault(newZend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ());
$this->layout='column2';
if (($term = Yii::app()->getRequest()->getParam('q', null)) !== null){
$this->actionCreate();
$index = new Zend_Search_Lucene(Yii::getPathOfAlias('application.' . $this->_indexFiles));
$query = Zend_Search_Lucene_Search_QueryParser::parse($term, 'utf-8');
$results = $index->find($query);
$dataProvider = new CArrayDataProvider($results, array(
'pagination'=>array(
'pageSize'=>3,
),
));
$this->render('search', array('dataProvider'=>$dataProvider, 'query'=>$query, 'results'=>$results, 'term'=>$term));
}
}
И view:
search.php
<h3>Search Results for: "<?php echo CHtml::encode($term); ?>"</h3>
<?php
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'viewData'=>array('query'=>$query),
));
?>
_view.php
<?php if (!empty($data)): ?>
<p><strong>Title:</strong> <?php echo $query->highlightMatches(CHtml::encode($data->title)); ?></p>
<?php //echo CHtml::link('Read', array('view', 'id'=>$data->id)); ?>
<p><strong>Link: </strong><?php echo CHtml::link(CHtml::encode($data->link), CHtml::encode($data->link), array('target'=>'_blank')) ?></p>
<p><strong>Content:</strong> <?php echo $query->highlightMatches(CHtml::encode($data->content)); ?></p>
<hr/>
<?php else: ?>
<p class="error">No results matched your search terms.</p>
<?php endif; ?>
Намира търсената дума, прави се съответствието, но ето как изкарва резултата:
подготвени професионалисти РІ областта РЅР° …
Ще съм много благодарен, ако някой може да помогне.
Благодаря предварително.
Поздрави,
Гого