Как правильно переиндексировать поисковый сервер Sphinx? - PullRequest
0 голосов
/ 12 января 2012

У меня есть веб-сайт, который использует поисковый сервер Sphinx для поиска в базе данных MySQL. Это работает отлично, но проблема в том, когда новые элементы добавляются в базу данных. Мой вопрос: когда лучшее время для выполнения переиндексации, а также как это сделать правильно. В настоящее время я делаю "indexer --all --rotate", но это, похоже, не работает. Единственный способ обновить индексы - это остановить sphinx, затем выполнить indexer --all и затем перезапустить службу. Это явно не идеально для живого сайта. Если у кого-нибудь есть какая-либо информация о том, как это сделать правильно, я был бы очень признателен.

Спасибо

Ответы [ 2 ]

2 голосов
/ 24 апреля 2012

Если я правильно понимаю, перезагрузка не требуется.Опция -all указывает индексатору обновлять каждый индекс.-rotate вращает индекс, то есть создает временную копию каждого индекса и заменяет старые по окончании.В соответствии с руководством Sphinx вращение работает следующим образом: : «он создает второй индекс, параллельный первому (там же, просто включая .new в именах файлов). После завершения индексатор уведомляет searchd посредством отправкисигнал SIGHUP, и searchd попытается переименовать индексы (переименовать существующие, чтобы включить .old, и переименовать .new, чтобы заменить их), а затем начать обслуживание с более новых файлов. В зависимости от настройки seamless_rotate могутнебольшая задержка в возможности поиска по новым индексам. "

Есть различия между плавным и" прерывистым "поворотами.Тип можно контролировать с помощью параметра seamless_rotate в файле конфигурации Sphinx. Бесшовное вращение достигается за счет более высокого пикового использования памяти во время вращения, но происходит без перерыва.

Версия Sphinx также имеет значение.В прежних версиях для обновления индекса требовался перезапуск, в последней версии это больше не требуется.

0 голосов
/ 06 января 2015

Опция --rotate вращает индекс, то есть создает временную копию каждого индекса и заменяет старые по окончании. Он создает второй индекс, параллельный первому (там же, просто включающий .new в имена файлов). По завершении индексатор уведомляет searchd через отправку сигнала SIGHUP, и searchd начинает обслуживание с более новых файлов, имеющих расширение .new. Если в системе уже есть файлы .new, просто обновите их после использования опции --rotate.

Опция '--all' указывает индексатору обновлять каждый индекс, но не вторые файлы индексатора, имеющие расширение .new, которые создаются с использованием опции '--rotate'

...