fatal error while trying to decode JSON response

Приветствую. Задумал позавчера переезд с много лет эксплуатируемого Sphinx на Manticoresearch.
На локальную машину (mac os) была поставлен с помощью homebrew версия 3.6.0 96d61d8@210504
PHP скрипты переписаны под новый движок, все прекрасно, все работает на кириллической базе utf8mb4

Переносим проект на продакшн, куда успешно ставится уже 4.0.2 af497f2@210921 release (columnar 1.11.2 69d3780@210921)
Поиск работает замечательно, но как только пытаемся использовать подсветку highlight(), все падает с fatal error while trying to decode JSON response.
Тот же запрос без highlight() возвращает корректный результат поиска.
В логе searchd.log ошибок нет. В какую сторону смотреть? Не хочется откатываться на 3.6.0, т.к. индекс по размеру стал почти в два раза меньше :)))

Здравствуйте, можете минимальный скрипт показать, который воспроизводит проблему? Т.е. на каком запросе и на каких данных это воспроизводится?

Сергей, спасибо, за быстрый ответ. Минимальный скрипт примерно такой:

try {
$s->setIndex(‘test_index’)->limit(20);
$result = $s->search($query)->highlight([],[‘around’=>50, ‘limit_snippets’ =>1])->get(); // так получим fatal error
// $result = $s->search($query)->get(); // а так получим верный набор данных
var_dump($result);
exit;
}
catch (Exception $e) {
echo $e->getMessage();
exit;
}

Насчет данных - могу сбросить индекс если скажите куда, но в целом это обычный кусок русскоязычного текста (plain индекс, индексатор отрабатывает корректно, ошибок не выдает).

Насчет данных - могу сбросить индекс если скажите куда, но в целом это обычный кусок русскоязычного текста (plain индекс, индексатор отрабатывает корректно, ошибок не выдает).

сделайте лучше перед search() создание тестового индекса и инсерт документа в него. Примерно как тут описано - Manticore Search Manual: Quick start guide

Парадокс, на realtime-индексе проблема не воспроизводится…

Тогда присылайте индекс на ftp - https://mnt.cr/ftp

Критическая ошибка при передаче файлов :slightly_smiling_face:
Выложил на ядиск bug — Яндекс.Диск

какое значение $query в вашем скрипте?

shimano
спиннинг
удочка
любой вариант

ОК. Посмотрю в понедельник.

1 Like

Спасибо!

Прошу прощения за беспокойство. Проблему нашли в другом месте, utf8mb4 в совокупности с group_concat_max_len первый раз за 7 лет удачно попало на рабочем контенте в глобальный сбой кодировки при выборке из MySQL.
Беда в следующем. В конфиге при подготовке индекса мы увеличиваем group_concat_max_len
sql_query_pre = SET @@group_concat_max_len = 65536
Как оказалось, с любым значением, выборка в индекс прилетает без кириллицы (все заменяется на ???).
Если через консоль mysql повторять увеличение group_concat_max_len и выборку данных, отображается все корректно, но индексатор в 4.0.2 почему-то не видит кириллицы, а в 3.6.0 все корректно.
Как только комментируем строку sql_query_pre = SET @@group_concat_max_len = 65536, индекс строится корректно.
В любом случае, спасибо за такой замечательный продукт и отзывчивое отношение к пользователям! :slight_smile:

Проблему решили с помощью sql_joined_field. group_concat - все же зло :crazy_face: