我正试图在Zend_Search_Lucene中找到一种方法来解决以下问题:
假设我们有一个用户,她的名字是Aïcha(注意特殊字符)。如果我正在搜索Aicha的索引(没有i的特殊衍生物),我希望在结果中返回Aïcha。
在编制索引或搜索时,我需要做些什么特别的工作吗?我已经阅读了关于在索引之前规范化数据的解决方案,用标准化字符替换所有特殊字符,但我宁愿不去那条路。
提前致谢, 加里
答案 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 ");
尝试在创建索引时使用此函数输出,存储实际值而不对其进行索引=)希望它有所帮助,我坦率地认为没有任何其他方法。