私は Sphinx 検索エンジンと Thinking Sphinx gem について読んでいます。TSドキュメントでは...
他の多くの検索サービスと比較すると、Sphinx には 1 つの大きな制限があります。インデックス内の単一のドキュメントのフィールドを更新することはできず、そのインデックスのすべてのデータを再処理する必要があります。
私の理解が正しければ、ユーザーが何かを追加または編集しても、その変更はインデックスに反映されません。そのため、レコードを追加しても、インデックス全体が再構築されるまで検索に表示されません。または、レコードを削除すると、検索結果に表示され、何らかのエラーや苛立たしい動作が発生します。
さらに、インデックスを再構築している間、Sphinx はシャットダウンされます。そのため、アプリの検索機能は定期的に (1 時間に 1 回、数時間に 1 回) オフラインになり、検索を行おうとすると、エラーまたは「後で試してください」というメッセージが表示されます。
OK、明らかに、実際のアプリでは受け入れられません。したがって、ほとんどの場合、デルタ インデックスを使用する必要があります。
しかし、定期的に検索エンジンをシャットダウンし、完全なインデックス作成を行う必要があるようです...
デルタ インデックス作成をオンにしても、完全な再インデックスを定期的に実行する必要がなくなるわけではありません。そうしないと、デルタ インデックス自体がコア インデックスと同じくらい大きくなり、分離しておく利点がなくなります。また、モデル レコードを変更するサーバーへのリクエストも遅くなります。
ここでドキュメントが何を言っているのかよくわかりません。多分誰かが私を助けることができます。デルタ インデックス作成の要点は、インデックスを定期的に再構築する必要がないことだと思いました。データが変更されるたびに即座に更新されます。
インデックスを 1 時間ごとまたは何かごとに再構築すると、完全にめちゃくちゃになるからですよね?