2010-07-27 125 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 "); 
 

尝试使用此功能输出,同时创建索引,存储实际值,而无需建立索引=)希望它帮助,我坦白不认为有任何其他方式。