Исключение при использовании функции highlightMatches в Zend_Search_Lucene_Search_QueryParser
Этот кусок кода от моего контроллера:
$index = new Zend_Search_Lucene(Yii::getPathOfAlias('application.' . $this->_indexFiles));
$results = $index->find($term);
$query = Zend_Search_Lucene_Search_QueryParser::parse($term,'utf-8');
Затем я попытался выделить свой результат в файле просмотра:
echo $query->highlightMatches($result->method, 'utf-8');
Но я получил исключение в ZendSearch/Lucene/Analysis/Analyzer/Common/Utf8.php(77)
iconv(): Detected an illegal character in input string
Вопрос в том, что я могу сделать, чтобы решить эту проблему.
1 ответ
Решение
Я делаю некоторые исследования. Проблема была в функции highlightExtended в ZendSearch / Lucene / Document / Html.php.
$analyzer->tokenize($wordString);
Функция Tokenize принимает кодирование в качестве второго параметра, но в приведенной выше строке я думаю, что оно было пропущено.
Код:
public function tokenize($data, $encoding = '')
{
$this->setInput($data, $encoding);
$tokenList = array();
while (($nextToken = $this->nextToken()) !== null) {
$tokenList[] = $nextToken;
}
return $tokenList;
}
Таким образом, iconv был вызван с пустой строкой в качестве параметра кодирования. Чтобы решить мою проблему, я просто сделал
public function tokenize($data, $encoding = 'UTF-8')
И все стало хорошо.