Zend搜索Lucene和Accented Characters

时间:2010-07-27 19:00:51

标签: zend-framework utf-8 lucene zend-search-lucene

我正试图在Zend_Search_Lucene中找到一种方法来解决以下问题:

假设我们有一个用户,她的名字是Aïcha(注意特殊字符)。如果我正在搜索Aicha的索引(没有i的特殊衍生物),我希望在结果中返回Aïcha。

在编制索引或搜索时,我需要做些什么特别的工作吗?我已经阅读了关于在索引之前规范化数据的解决方案,用标准化字符替换所有特殊字符,但我宁愿不去那条路。

提前致谢, 加里

1 个答案:

答案 0 :(得分: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 ");

尝试在创建索引时使用此函数输出,存储实际值而不对其进行索引=)希望它有所帮助,我坦率地认为没有任何其他方法。