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?)
新しいインデックスファイルから取得するには、検索デーモンの2つのプロセスをkill
して再起動する必要がありました。それを再起動するための適切な方法はありますか?
私はこれが遅い答えであることを知っていますが、あなたが知っているように、Sphinxを「再起動」するには、それを停止してから開始する必要があります(2つの異なるプロセスのように)。
停止するには、searchd --stop
を呼び出してから、searchd
で再び開始します。
新しいインデックスに対してインデクサーを呼び出して作成し、次に--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を削除して、再度検索を開始します
Sphinxの一部のインスタンスで、デーモンを停止できないsearchd --stop
コマンドに問題があるようです。
試してください:service sphinxsearch stop
参照: https://bugs.launchpad.net/ubuntu/+source/sphinxsearch/+bug/990395
service searchd start
CentOSで私のために働いた