五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > Zend_Search_Lucence 中用UTF-8 編碼建立索引的問(wèn)題

Zend_Search_Lucence 中用UTF-8 編碼建立索引的問(wèn)題

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):399    更新時(shí)間:2009-09-24 22:33   參與評(píng)論
PHP 的 Zend_Search_Lucence 是ZendFrameWork 的一個(gè)擴(kuò)展包。因?yàn)槭菨h字,所以只能用UTF-8 來(lái)建立索引,建立了索引后發(fā)現(xiàn)
搜索的時(shí)候不對(duì)了。原來(lái),搜索的時(shí)候,即時(shí)你輸入的字符串是UTF-8的,你也要默認(rèn)的設(shè)置搜索字符的編碼??磥?lái)下面的代碼就應(yīng)該明白了。
用UTF-8建立索引是中文搜索的第一步,過(guò)幾天再寫(xiě)篇文章介紹Zend_Search_Lucence 索引中文。

(下面的代碼只是做測(cè)試用的)
建立索引的代碼如下:
/**
 * @see Zend_Feed
 
*/
require_once 'Zend/Feed.php';

/**
 * @see Zend_Search_Lucene
 
*/
require_once 'Zend/Search/Lucene.php';

//create the index
$index = new Zend_Search_Lucene(dirname(__FILE__. '/index', true);

Zend_Search_Lucene_Analysis_Analyzer
::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive()); //設(shè)置utf-8格式編碼,并且是大小寫(xiě)不敏感的。

// index each item
$rss = Zend_Feed::import('http://feeds.feedburner.com/ZendDeveloperZone');

foreach ($rss->items as $item) {
    
$doc = new Zend_Search_Lucene_Document();

    
if ($item->link && $item->title && $item->description) {

        
$link = htmlentities(strip_tags($item->link()));
        
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('link', $link, 'utf-8'));

        
$title = htmlentities(strip_tags($item->title()));
        
$doc->addField(Zend_Search_Lucene_Field::Text('title', $title, 'utf-8'));

        
$contents = htmlentities(strip_tags($item->description()));
        
$doc->addField(Zend_Search_Lucene_Field::Text('contents', $contents, 'utf-8'));

        
echo "Adding {$item->title()}\n";
        
$index->addDocument($doc);
    }
}

$index->commit();

搜索的代碼:
/**
 * @see Zend_Search_Lucene
 
*/
require_once 'Zend/Search/Lucene.php';

$index = new Zend_Search_Lucene(dirname(__FILE__. '/index');
echo "Index contains {$index->count()} documents.\n";
Zend_Search_Lucene_Analysis_Analyzer
::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive()); //必須設(shè)置,告訴它字符串的處理方式。

$search = 'php';
Zend_Search_Lucene_Search_QueryParser
::setDefaultEncoding('utf-8'); //必須告訴,告訴查詢(xún)解析器字符串的編碼。我用的zend 版本比較低,不設(shè)置,就查不出來(lái),高版本的zend 據(jù)說(shuō)是可以不用設(shè)置的。

$hits   = $index->find(strtolower($search));

echo "Search for \"$search\" returned " .count($hits). " hits.\n\n";

foreach ($hits as $hit) {
    
echo str_repeat('-', 80. "\n";
    
echo 'ID:    ' . $hit->id                     ."\n";
    
echo 'Score: ' . sprintf('%.2f', $hit->score) ."\n\n";

    
foreach ($hit->getDocument()->getFieldNames() as $field) {
        
echo "$field: \n";
        
echo '    ' . trim(substr($hit->$field,0,76)) . "\n";
    }
}


如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答!! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (399人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱(chēng):
最新評(píng)論
------分隔線(xiàn)----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢(xún)

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)