私はSphinxのドキュメントとさまざまなリソースを読んだことがありますが、メインインデックスとデルタインデックスを維持するプロセスについては混乱しています。これが正しい場合は私に知らせてください: スフィンクスのメインとデルタのインデックスを更新するには
- は15分ごとにデルタインデックスの更新
(チュートリアルhttp://sphinxsearch.com/docs/1.10/delta-updates.htmlのように、NOT ID)
last_update_time
で検索インデックスを分割テーブルを持っています。indexer --merge main delta --merge-dst-range deleted 0 0 --rotate
前のクエリSQLはにlast_update_time
を更新します:毎時間使用してデルタをマージすることにより、メインインデックスを
indexer --rotate --config /opt/sphinx/etc/sphinx.conf delta
更新:デルタインデックスにのみ更新されたレコード>last_update_time
をつかみますNOW()
、インデックスを再パーティション化
混乱:マージでプリクエリのSQLが実行されますか?
メインインデックスが更新された後、すぐにそれをクリーンアップするためにデルタインデックスを更新:
indexer --rotate --config /opt/sphinx/etc/sphinx.conf delta
はEDIT:どのようにレコードの削除をしても動作しますが?デルタインデックスには削除されたレコードが含まれるため、デルタインデックスがメインにマージされた後にのみレコードが検索クエリから削除されます。あなたはkilllistを調べる必要があり、削除に対処するために
スフィンクスでリアルタイムで文書を削除する方法はありますか?あるいは、いつでもデルタインデックスが再構築されるのを待たなければなりませんか?一般的な使用例は、ユーザーが投稿したものを削除したいという場合です。 – Simian
sphinx 1.10-betaには、リアルタイム索引の考え方があります。これらの索引は、SQLステートメント(更新/削除/挿入)を実行することができます。あなたが標準的なインデックスを使用しているなら、私はそうは思わない。 – Ian