Yii Framework Forum: Проблем с ползването на zend lucene search в Yii - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Проблем с ползването на zend lucene search в Yii Използване на кирилица при търсене Rate Topic: -----

#1 User is offline   Gogo 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 17-May 12
  • Location:Sofia

Posted 17 May 2012 - 04:03 AM

Здравейте,

Използвам следната търсачка ...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; ?>


Намира търсената дума, прави се съответствието, но ето как изкарва резултата:
подготвени професионалисти в областта на ...

Ще съм много благодарен, ако някой може да помогне.
Благодаря предварително.
Поздрави,
Гого
0

#2 User is offline   xtan 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 10-August 11
  • Location:Bulgaria, Sofia

Posted 13 August 2012 - 09:18 AM

Като за начало, искам да се извиня за късния отговор.
Zend Lucene прави проблем при използването му под Windows. Така, че провери дали същия проблем ще излиза и на Linux дистрибуция. Като цяло имат фиксове за работа с UTF-8 (при запазване на документ трябва да се покаже, че трябва да се запази UTF-8, същото и при търсенето на документи).
Един бърз пример
$doc->addField(Zend_Search_Lucene_Field::Text('lucene_DB_CLOUMN_NAME',utf8_decode($db_apater_result['DB_CLOUMN_NAME']),'UTF-8'));

Ако още не си оправил проблема, мога да ти препоръчам да инсталираш sphinxsearch . Като представяне е нива над Zend Lucene, единствения недостатък е, че е сървър (не става от share host)...
Never leave your job unfini...
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users