@MaxPyane

Как решить сей нюанс при обновлении Sphinx до v3?

Суть проблемы такова, может кто-то сталкивался.
Был на версии 2.2.10, решил перейти на 3.0.3. Заметил гигантские изменения, например при одинаковом количестве записей в БД конечный размер индекса на 3-ей версии в два раза меньше чем на 2-ой версии. Обрадовался я, но когда дошел момент вытягивания данных из нового Sphinx'а, настало полное разочарование.

С самим поиском вроде бы никаких проблем, но весь трабл в другом. На моем сайте есть поддержка пагинации с 1-ой страницы до самой последней. Т.е пользователь может взять и перейти в самую последнюю страницу либо на другую любую. Не спрашивайте зачем, долгая история, так надо. Чтобы скакать по всем страницам делал я на версии 2 так:
$cl->SetLimits(($page - 1) * $perPage, $perPage, 500000); // 500k это с запасом

И собственно пустой запрос чтобы получить последние записи (есть еще сортировка по ID в порядке убывания, опустим это):
$result = $cl->Query('', 'articles delta');

Вся проблема лежит именно в SetLimits. Выставляя max_matches с запасом для Sphinx 2 (в противном случае в конец, даже в центр никогда не попадет) вообще никаких проблем не создает. Запросы выполняются мгновенно, все как надо (в индексе записей кстати больше 200k). Но вот в 3-ей версии такая штука не проходит, т.е оно работает но новый Sphinx при одном только таком запросе сжирает всю RAM на сервере и все доходит в итоге до того, что OOM killer его сносит.

С дефолтным max_matches который равен 1000 все работает хорошо и быстро, можно конечно увеличивать его, но сколько RAM хватит.
Что делать-то? Уже второй день в поиске. Убирать фичу с сайта не очень хочется.
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
Откатите сфинкс обратно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы