3

検索可能なレコードを毎日大規模に追加および削除する必要があるプロジェクトのフリー テキスト検索用に Solr を実装しています。

スケールのため、インデックスのサイズが適切であることを確認する必要があります。

Solr のテスト インストールで、10 個のドキュメントのセットにインデックスを付けました。次に、ドキュメントの 1 つを変更し、そのドキュメントをインデックス内の同じ ID に置き換えたいと考えています。これは正しく機能し、検索すると期待どおりに動作します。

このコードを使用してドキュメントを更新しています。

getSolrServer().deleteById(document.getIndexId());
getSolrServer().add(document.getSolrInputDocument());
getSolrServer().commit();

私が気づいたのは、Solr サーバーの統計ページを見ると、数値が期待したものではないということです。

初期インデックスの後、numDocs と maxDocs は両方とも予想どおり 10 に等しくなります。ただし、ドキュメントを更新すると、numDocs は 10 (予期される) のままですが、maxDocs は 11 (予期しない) になります。

ドキュメントを読むと、

maxDoc カウントには、インデックスからまだ削除されていない論理的に削除されたドキュメントが含まれるため、maxDoc は大きくなる可能性があります。

問題は、論理的に削除されたドキュメントをインデックスから削除するにはどうすればよいかということです。

これらのドキュメントがまだインデックスに存在する場合、これを非常に大量のドキュメントで実行すると、パフォーマンスが低下するリスクがありますか?

ありがとう :)

4

1 に答える 1

6

インデックスを最適化する必要があります。

最適化は拡張的であることに注意してください。おそらく、毎日以上に行うべきではありません。

最適化に関する詳細情報は次のとおりです。

http://www.lucidimagination.com/search/document/CDRG_ch06_6.3.1.3

http://wiki.apache.org/solr/SolrPerformanceFactors#Optimization_Considerations

于 2010-06-16T15:15:15.160 に答える