Как изящно перезапустить демон поиска Sphinx после переиндексации

Я переиндексировал мой поиск Sphinx с помощью /usr/local/sphinx/bin/indexer --all --rotate и переименовал мои исходные выходные файлы вывода в другое. Простое изменение аргумента индекса, переданного в $sphinx->Query($query, $index);, не возвращает результатов.

Я подозревал, что демон не знает, что существуют новые файлы индекса. Поэтому я побежал

sudo /usr/local/sphinx/bin/searchd

снова, чтобы попытаться перезапустить его. Но он бросил

FATAL: failed to lock pid file '/usr/local/sphinx/var/log/searchd.pid': Resource temporarily unavailable (searchd already running?)

Мне пришлось kill выполнить 2 процесса поискового демона и снова запустить его, чтобы захватить новые файлы индексов. Есть ли изящный способ его перезапустить?

Ответ 1

Я знаю, что это поздний ответ, но так, чтобы вы знали, чтобы "перезапустить" Sphinx, вам нужно остановить его, а затем запустить его (как в двух различных процессах).

Чтобы остановить его, вызовите searchd --stop, а затем снова запустите его с помощью searchd.

Ответ 2

Вам нужно будет вызвать индексатор для нового индекса для его создания, а затем --rotate, чтобы его обновить.

Итак, это было бы что-то вроде

indexer --config /path/to/config.conf indexname

И тогда, когда вы просто хотите обновить свои индексы

indexer --config /path/to/config.conf --rotate --all

Это создаст временную копию каждого индекса и заменит старые, когда закончится. Для получения дополнительной информации о том, что на самом деле происходит, см. http://sphinxsearch.com/docs/manual-0.9.9.html#ref-indexer

По другой ошибке вы получаете У

ps aux | grep searchd

если он не возвращает никаких результатов, затем удалите /usr/local/sphinx/var/log/searchd.pid и снова запустите searchd

Ответ 4

service searchd start работал у меня на CentOS