0

私はASP.net MVC3 eコマースプロジェクトでSolr 3.6に取り組んでいます。

私はappxのインデックスを持っています。Solr の 1 lac 製品。要件にいくつかの変更があり、インデックス全体を再構築する必要があります。インデックス作成全体に約 1 時間半かかり、その間サイトを停止する必要があります。

インデックスを再構築し、古いインデックスからコンテンツを提供するサイトをライブに保つにはどうすればよいですか。インデックス全体を再構築する際のダウン タイムを短縮するためのベスト プラクティスは何ですか。稼働率100%でできたらいいのに。

編集 いくつかの URL を Solr データに格納フィールドとして格納しているため、Solr にデータを追加するときに動的に生成されます。test.example.com のような別のサブ ドメインにアプリケーションをデプロイすると、間違った URL が使用され、example.com でのみ機能します。したがって、別のアプリケーションをホストすることは私にとって選択肢ではありません。

4

2 に答える 2

6

Solr の複数のコアの概念を活用することで、ユーザーが現在検索しているライブ コアと、スキーマの変更やインデックスの再作成などを行うことができるスタンバイ コアを持つことができます。その後、SWAPコマンドを使用して、ライブとユーザーのダウンタイムのないスタンバイ コア。スワップは Solr によって内部的に処理され、ユーザーが違いに気付くことはありません。

于 2012-08-13T11:40:23.347 に答える
1

ご覧のとおり、この問題を正しく解決するにはいくつかの方法があります。

  1. インデックス全体を再構築するのではなく、必要なレコードが変更されたときにオンザフライで更新するだけです。Solr は非常に簡単に実行できます。
  2. 異なるポートに 2 つの Solr インスタンスを作成し、それらを 1 つずつ使用します。最初に再構築するときは、2 番目に古いインデックスを使用できます。そして、最初のインスタンスが再構築されると、2 番目のインスタンスのインデックスが再構築されるまで使用できます。
  3. 「old_index」などの名前のインデックスにブール型フィールドを追加します。そして、インデックスの再作成が開始されたら、現在のすべてのレコードを更新して old_index=1 に設定し、構成のどこかに old_index==1 のレコードを探すように書き込みます。古いレコードを削除するよりも、再インデックスを開始するよりも。これは、Solr の deleteByQuery と、Solr 4.x の自動更新または手動更新のいずれかで実行できます。
于 2012-08-13T11:07:07.330 に答える