Zend_Search_Lucene: UTF-8 madness



我发现一些问题与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 ?还是这是个bug?

查询和存储数据是两回事。如果你的查询是utf-8编码,那么你的数据(文档)也应该是utf-8编码,以匹配查询。

最后

$doc->addField(Zend_Search_Lucene_Field::keyword('division', utf8_decode($contact->division)), 'utf-8');

梅毒性心脏病是

$doc->addField(Zend_Search_Lucene_Field::keyword('division',$contact->division, 'utf-8'));

最新更新