我对 Zend_Search_Lucene 和非英语字符(如德语 ÄÖÜ)有一些问题。我的数据库返回 UTF-8 格式的字符串,所以我认为一切都会正常工作。
在遇到严重的编码问题后,我在网上搜索并发现,以下代码行解决了大多数人的问题:
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ()
事实上,这并没有解决我的问题。今天我想出了一个可行的解决方案:(不是utf8_decode
)
$doc->addField(Zend_Search_Lucene_Field::keyword('division', utf8_decode($contact->division)), 'utf-8');
好吧,这工作得很好,但坦率地说,它看起来很奇怪。为什么我必须来回转换字符串?也许我使用 Lucene 错了?或者这是一个错误?