【问题标题】:Zend Search Lucene and Accented CharactersZend 搜索 Lucene 和重音字符
【发布时间】:2010-07-27 19:00:50
【问题描述】:
我试图在 Zend_Search_Lucene 中找到一种方法来实现以下场景:
假设我们有一个用户,她的名字是 Aïcha(注意特殊字符)。如果我正在搜索 Aicha 的索引(没有 i 的特殊导数),我希望在结果中返回 Aïcha。
在建立索引或搜索时,我需要做一些特别的事情来完成这项工作吗?我已经阅读了有关在索引之前规范化数据的解决方案,用规范化字符替换所有特殊字符,但我宁愿不走那条路。
提前致谢,
加里
【问题讨论】:
标签:
zend-framework
utf-8
lucene
zend-search-lucene
【解决方案1】:
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 ");
尝试在创建索引时使用此函数输出,存储实际值而不对其进行索引 =) 希望对您有所帮助,坦率地说,我认为没有其他方法。