重建索引后如何正常重启Sphinx搜索守护进程

时间:2011-10-26 12:23:59

标签: full-text-search sphinx

我已使用/usr/local/sphinx/bin/indexer --all --rotate重新编制了我的Sphinx搜索索引,并将原始索引输出文件重命名为其他内容。只需更改传递给$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个进程并再次启动它以从新索引文件中获取。是否有一种优雅的方式来重新启动它?

4 个答案:

答案 0 :(得分:25)

我知道这是一个迟到的答案,但你知道,要重新启动Sphinx,你需要停止它然后启动它(如两个不同的进程)。

要停止播放,请拨打searchd --stop,然后使用searchd再次启动它。

答案 1 :(得分:9)

您需要在新索引上调用indexer来创建它,然后--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 并再次开始搜索

答案 2 :(得分:4)

searchd --stop命令似乎无法在某些Sphinx实例上停止守护程序。

尝试:service sphinxsearch stop

请参阅:https://bugs.launchpad.net/ubuntu/+source/sphinxsearch/+bug/990395

答案 3 :(得分:0)

service searchd start在CentOS上为我工作