Исключение при использовании функции 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')

И все стало хорошо.

Другие вопросы по тегам