0

ここでも他の場所でも解決策が見つからないため、Zend Lucene について別の質問をしています。誰もが Lucene のエンコーディングについて話します。このエンコードをどこで切り替える必要がありますか?

検索(PL言語)を使用すると、

oprĂłcz wystÄ…pi reprezentacja Rosji. Mistrzowie olimpijscy z Londynu powalczÄ…</p>

この Ăł はポーランド語では "ó" で、Ä… (ウムラウト?) は "ą" などです... もちろん、英語との相性も抜群です。

再び searchController.php (アクションの作成 + 検索):

public function actionCreate()
{
    $_indexFiles = 'runtime.search';  
    $index = Zend_Search_Lucene::create($_indexFiles);
    $index = new Zend_Search_Lucene(Yii::getPathOfAlias('application.' . $this->_indexFiles), true);

    $posts = News::model()->with('comment')->findAll();
    foreach($posts as $news){


        $doc = new Zend_Search_Lucene_Document();

        $doc->addField(Zend_Search_Lucene_Field::Text('title',CHtml::encode($news->name), 'utf-8'));

        $doc->addField(Zend_Search_Lucene_Field::Text('link',CHtml::encode($news->url), 'utf-8'));   

        $doc->addField(Zend_Search_Lucene_Field::Text('content',CHtml::encode($news->description), ' utf-8 '));

        $index->addDocument($doc);
    }
    setlocale(LC_CTYPE, 'pl_PL.utf-8');
    $index->commit();
    echo 'Lucene index created';
}

public function actionSearch()
{

    Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
    Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ());

    $this->layout='column2';

     if (($term = Yii::app()->getRequest()->getParam('q', null)) !== null) {
        $index = new Zend_Search_Lucene(Yii::getPathOfAlias('application.' . $this->_indexFiles));
        $results = $index->find($term);
        $query = Zend_Search_Lucene_Search_QueryParser::parse($term);       

        $this->render('search', compact('results', 'term', 'query'));
    }
}
4

1 に答える 1

0

Zend_Lucene にようこそ。飽きたら、SolrSphinxなどのネイティブ検索エンジンを使い始めることができます。

「他人の過ちから学ぶ。すべてを自分のものにするほど長生きすることはできない。」

于 2013-01-16T17:09:41.230 に答える