2016-06-16 5 views
0

私はsolr検索エンジンを使用しています。私は最初にスキーマを定義し、SQLデータベースからDIHを使用してsolrにデータをインポートしました。私はSQLのdbと値の新しい列を取得しているいくつかの前の列を使用して取得されている。今、この新しい列をソルバーにインデックスする必要があります。solrの使用中にすべてのレコードを更新するか、再インデックスする方が良いですか?

私の質問は、すべてのレコードの更新を実行するのですか、またはsolrからすべてのレコードを削除し、DIHを使用して再度インデックスを再作成しますか?私はこの問題を尋ねています。なぜなら、どのドキュメントでも更新を実行すると、solrは最初にインデックスを削除してから、再度再構築するということです。

+0

こんにちは、私たちは、任意のドキュメントの更新を実行する場合、solrは最初にインデックスを削除し、再度それを再構築する "間違っていると私は本当に心配するでしょう、その文書の更新はSolrには存在しませんが、同じ一意のIDを持つ文書は削除され、新しい文書が索引付けされます。だから、ゼロからのインデックス作成は、あなたに何らかの利点を与えるでしょうが、インデックスが十分に大きくなると、それを行うことはできません。 – AR1

答えて

3

スピードに関する答えは、いつものように「それに依存します」。しかし、通常、再インデックスするほうが簡単です。 Solrにすべてのフィールドを格納する必要はありません。これは、サポートする必要があるため、追加のコードは必要ありません。

また、部分的な更新を行う場合は、実際にはdelete + add(フィールドに依存するフィールドが存在する可能性があるので注意してください)変更したり、プロセッサーを更新したり、クラスター全体に分散させたりするなど) - すべてのフィールドを保存する必要があります。これは索引のサイズに大きな影響を与える可能性があります。特にDBのすべてのコンテンツが他のすべての用途に使用されている場合は特にそうかもしれません。

スピードに関しては、おそらくドキュメントサイズ、DBの速度、フィールドサイズなどが各ケースごとに影響を与えます) - しかし、通常は再インデックスのスピード最も重要な部分ではありません。

0

インデックスを更新する場合は、削除したすべてのドキュメントを削除するために、あとで(たとえば管理コンソールから)インデックスを最適化することを忘れないでください。

関連する問題