我已使用/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个进程并再次启动它以从新索引文件中获取。是否有一种优雅的方式来重新启动它?
答案 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上为我工作