2011-01-10 9 views
4

私は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を調べる必要があり、削除に対処するために

  • 答えて

    2

    、それは基本的に除去基準を定義します。

    私たちは、単にファイル名を指定して実行を主力毎日、早朝を構築している例では

    http://sphinxsearch.com/docs/manual-1.10.html#conf-sql-query-killlist

    デルタアップデート(killlistを含む)は5分ごとに更新されます。

    マージのものについては、一度も使ったことがないとは分かりません。

    +0

    スフィンクスでリアルタイムで文書を削除する方法はありますか?あるいは、いつでもデルタインデックスが再構築されるのを待たなければなりませんか?一般的な使用例は、ユーザーが投稿したものを削除したいという場合です。 – Simian

    +0

    sphinx 1.10-betaには、リアルタイム索引の考え方があります。これらの索引は、SQLステートメント(更新/削除/挿入)を実行することができます。あなたが標準的なインデックスを使用しているなら、私はそうは思わない。 – Ian

    関連する問題