4

Solr インデックスには何百万ものドキュメントがあります。これらのドキュメントのうち、スキーマを変更したいフィールド A を持つドキュメントは 1,000 個だけです。スキーマの変更には、multiValuedを true から false に変更する、false から true に保存する、typeをテキストから文字列に変更するなど、インデックスの再作成が必要なものが含まれます。数千のドキュメントの再インデックスには数分かかりますが、すべての再インデックスには数日かかります。

Solr wiki の再インデックス作成ページ ( http://wiki.apache.org/solr/HowToReindex ) には、「インデックス作成プロセスを開始する前に、すべてのドキュメントを削除する必要がある場合があります」と記載されていますが、削除しない場合については記載されていません。 .

フィールド A を含む 1,000 個のドキュメントだけを削除して、それらの 1,000 個のドキュメントを再インデックス化できますか? それとも、すべてのドキュメントを再インデックス化する前に、インデックス全体 (すべてのドキュメント) を削除する必要がありますか?

小さなサンプル インデックスで「少数を削除する」シナリオをテストしました。更新とクエリは、変更されたフィールドで期待どおりに機能します。ただし、運が良かったのかどうかはわかりません。すべてを削除していないため、いくつかの問題が潜んでいます。

4

1 に答える 1

7
  • 同じ ID (schema.xml で定義された一意のキー) を持つドキュメントにインデックスを付ける場合、インデックスを付ける前にドキュメントを削除する必要はありません。同じ ID を持つドキュメントをインデックス化すると、既存のドキュメントが上書きされます。

同じ ID のドキュメントをインデックス化すると、古いドキュメントは自動的に「削除済み」としてマークされますが、インデックスから物理的に削除されるわけではないことに注意してください。そして、用語ベクトル分析はすべての文書 (削除された文書を含む) に適用されます。

削除されたドキュメントを物理的にクリーンアップする必要がある場合は、インデックスの「最適化」を実行する必要があります。これは、solr 管理インターフェイスから実行できます。

  • スキーマを変更する場合、すべてをインデックス化する必要はありません。影響を受けるドキュメントのみを再インデックスするだけで十分です。

だから私があなたの立場だったら、何も削除しません。影響を受ける数千のドキュメントのみを再インデックスするだけです。その後、後で最適化してインデックスをクリーンアップします。

于 2014-04-15T02:43:54.810 に答える