0

私は solr を使用して約 40m の項目のインデックスを作成しています。最終的なインデックス ファイルは約 20G です。以下は、デルタ インポート後のメッセージです。

<lst name="statusMessages">
<str name="Time Elapsed">0:51:44.149</str>
<str name="Total Requests made to DataSource">1</str>
<str name="Total Rows Fetched">5634016</str>
<str name="Total Documents Skipped">0</str>
<str name="Full Dump Started">2012-09-27 01:25:17</str>
<str name="">
Indexing completed. Added/Updated: 5634016 documents. Deleted 0 documents.
</str>

このステータスを実行しているsolrは何ですか?メッセージreplication?command=detailsの戻り値は次のとおりです。

<lst name="masterDetails">
<str name="indexSize">36.69 GB</str>

指数はほぼ 2 倍であり、さらに大きくなる傾向にあります。これは私を非常に混乱させました。差分インポートを行っていますが、置換するとインデックスが 2 倍のサイズになるのはなぜですか?

4

2 に答える 2

0

ほとんどのドキュメントを交換している場合、それは正常です。インデックス セグメントは一度だけ書き込みを行うため、lucene での更新はドキュメントの削除と再挿入で構成されます。ドキュメントを削除しても、実際には削除されているわけではなく、削除済みとしてマークされているだけです。

削除されたドキュメントは、次のマージが発生したときに実際に削除され、新しい大きなセグメントが小さなセグメントから作成されます。その時点で、インデックス サイズの減少が見られるはずです。つまり、インデックスのサイズを増やすだけではいけません。マージは、使用中のマージ ポリシーに従って多かれ少なかれ発生します。手動でマージを強制する場合は、最適化の新しい名前である forceMerge 操作を使用できます。使用している solr のバージョンに応じて、1 つ目または 2 つ目のいずれかを使用する必要があります。ドキュメントが多いと forceMerge に時間がかかるので注意してください。こちらの記事もどうぞ。

于 2012-09-27T10:30:17.673 に答える