Zend_Search_Lucene: UTF-8 безумие - PullRequest
       39

Zend_Search_Lucene: UTF-8 безумие

1 голос
/ 09 октября 2011

У меня проблемы с 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?Или это ошибка?

1 Ответ

0 голосов
/ 09 октября 2011

Запросы и хранение данных - это две разные вещи. Если ваш запрос закодирован в 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'));
...