2010-07-27 131 views
6

我試圖找到Zend_Search_Lucene的方式拉斷以下情形:Zend的搜索Lucene和重音字符

比方說,我們有一個用戶,她的名字叫艾莎(注意特殊字符)。如果我正在搜索Aicha的索引(沒有i的特殊衍生物),我想讓Aïcha返回結果。

當索引或搜索爲了使這項工作有什麼特別的我需要做的?我已經閱讀了有關在索引之前規範化數據的解決方案,用規範化的字符替換了所有特殊字符,但我寧願不走那條路線。

由於提前, 加里

回答

3
 

function normalize ($string){ 
    $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ 
ßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ'; 
    $b = 'aaaaaaaceeeeiiiidnoooooouuuuy 
bsaaaaaaaceeeeiiiidnoooooouuuyybyRr'; 
    $string = utf8_decode($string); 
    $string = strtr($string, utf8_decode($a), $b); 
    $string = strtolower($string); 
    return utf8_encode($string); 
} 
$passToIndexer = normalize(" Aïcha "); 
 

嘗試使用此功能輸出,同時創建索引,存儲實際值,而無需建立索引=)希望它幫助,我坦白不認爲有任何其他方式。