最近、solr によって駆動されるオートコンプリート/自動提案機能を実装しました。私の solr 実装は、レールの太陽黒点の宝石を使用しています。オートコンプリート検索はレールをまったく通過しませんが、Apache リバース プロキシを介して solr サーバーに直接送信されます。したがって、この場合、黒点の役割は、レコードが作成または更新 (または削除) されたときにインデックスを再作成することです。
私の問題は、レコードが作成または保存され、delayed_job の再インデックスがトリガーされたときに、本番環境のみのオートコンプリート検索に反映されないことです。レコードが開発またはステージングで保存されると、変更はすぐにオートコンプリート検索に反映されます。
私のコードと solr 構成はすべて git で管理されているため、すべての環境 (開発、ステージング、および運用) で同じです。プロダクション固有の構成変更は行っていません (まだ!)。すべてを同じにするために、MySQL データベースと solr インデックス ファイルを本番環境から他の環境にもコピーしました。再起動しましたが、念のためレールとソルを何度も。
本番環境では、ジョブがdelayed_jobを通過するのを確認し、太陽黒点のsolrログで更新を確認します。ただし、ログ出力のほとんどはまだギリシャ語です。本番環境と開発環境を 1 行ずつ比較したところ、ほぼ同じように見えます。
curl を使用して solr サーバーに対して直接テストし、それが私と solr だけであることを確認しました。Apache も、ネットワークも、ブラウザもありません。
その同じレコードが保存されると、一連の子オブジェクトを再インデックス化するジョブが開始され、期待どおりに再インデックス化されます。
また、そのモデルの rake タスクを使用してインデックスを再構築すると、インデックスが正しく再構築されます。それはほんの数分しかかからないので、それが私が今やっていることです。
したがって、問題は、この 1 つのタイプ、この 1 つの環境、作成/更新時のみです。
私が識別できる唯一の違いは負荷ですが、私のサイトにはユーザーがほとんどいないため、それが重要だとは考えにくいです。
これを引き起こしている可能性のあるもの、またはそれを理解するために次に何を調べるべきか考えていますか? 私の推測ではキャッシングですが、プロダクション チューニングを行っていないので、同じはずです。太陽黒点が私が気付いていないことをしない限り。