すべてのユーザーが挿入できるMySQLテーブルがあります。テーブル内のフィールドの1つは、行が一致するsolrドキュメントの総数です。total results
としてください。MySQLとSolrの整合性、いずれかに挿入
REST APIコードでは、挿入時にsolrクライアントを使用して、新しい行が一致するドキュメントの総数を検索します。フィールドを更新してから、完成したリソースを返します。十分に簡単ですが、私は何とかこのアップデートを自動的にMySQL経由で起動することを好むでしょう。
大きな問題は、新しい文書をsolrに挿入したり、古い文書をsolrから削除する際に、REST APIコードと同じロジックを持つシェルスクリプトを実行して、total results
の更新を実行するより良い計画がないことです各行。
私のオプションは、私はそれを見るように、これらは次のとおりです。
1)、一つ一つのSolrするdata_import
後にすべての行を更新します。この表には約1.5Mの行があるので、しばらく時間がかかります。
2.)データベース内のフィールドを完全に取り除き、リソースが取得されるたびにすべてtotal results
の和をsolrから取得します。 (これは私のケースでは非常に悪い考えです。ユーザーがGET/api/resourceをリストとして使用してこのテーブルから20K行を検索するためです)
3.)特定のMySQLテーブル行solrドキュメントはこれらの行に影響を与え、更新を制限します。これは、基本的に検索プロセスを逆にすることを含む。
解決策1と3は、基本的に私がsolr data_import
を管理するスクリプトと、MySQLローのtotal results
フィールドの更新を1つのプロセスとして記述する必要があります。私はそれをすることができますが、私はこれらの問題をどのように最善に管理するかについていくつかの洞察を用いることができます。
どのようにして一貫性を維持しますか?
Alfrescoがどのように「最終的な」および「トランザクション的な」一貫性の問題を扱うかを調べると、多分それが役立つでしょう。 – Lista