3

StreamingUpdateSolrServer を使用します。次のアルゴリズムを使用して、巨大なデータセットを SOLR に再インデックス化しました。

Initialize StreamingUpdateSolrServer server = new StreamingUpdateSolrServer(solrServerUrl, numDocsToAddInBatch, numOfThreads);

For each Item…
-->Create document
-->Server.add(document)

When all finished,

server.commit();
server.optimize();

問題:

一部のアイテムが SOLR インデックスに登録されていませんが、何が起こったかを示すログが生成されていません。

ほとんどの文書を見つけることができましたが、いくつかは行方不明でした。どのログにもエラーはありません。また、クライアント サイトのすべての SOLRJ 例外に関するログを含む十分な try/catch ブロックがあります。

4

1 に答える 1

2

SOLR WAR のログが非表示になっていないことを確認する

SOLR サーバーのログ設定が、ドキュメントをインデックスに追加できないという事実を隠していないことを必ず確認してください。

SOLR は SLF4J API を使用するため、SOLR サーバーがログ設定を上書きして、ドキュメントのインデックス作成に失敗したときにエラー メッセージを表示できる可能性があります。

カスタムの {solr-war}/WEB-INF/classes/logging.properties を使用している場合は、エラー メッセージを隠すような設定になっていないことを確認する必要があります。

デフォルトでは、アイテム追加時のエラーは自動的に表示されます。そのため、SOLR ログ設定を変更していない場合は、インデックス作成中にサーバー ログ ファイルにエラーが表示されるはずです。

ドキュメントのインデックス作成に失敗する理由のトラブルシューティング

これを調査するには、インデックス作成が完了した後、いつでも検証手順に従うことが役に立ちます。

Initialize new log log_fromsolr
Initialize new log log_notfound

    For each Item…
    -->Search SOLR for the item. If SOLR has the object, log each item’s fields into log_fromsolr on a single line into log_fromsolr. This should include the unqiueKey for your document if you have one. 
    -->If document cannot be found in SOLR for this item, write a line to log_notfound with all the fields from the object from the database, also supplying the uniqueKey as the first line.

検証ステップが完了すると、ログ log_notfound によって、インデックスに追加できなかったすべてのドキュメントのリストが作成されました。

log_fromsolr によって作成されたログを使用して、インデックスに登録されたアイテムとされなかったアイテムのドキュメント フィールドを比較できます。

断続的な問題ではないことを確認します

インデックスを作成しようとするたびに、同じアイテムがインデックスに追加されない場合があります。

log_notfound ログにオブジェクトが見つかった場合は、現在の notfound ログをバックアップして、インデックス作成プロセスを最初からやり直す必要があります。差分ツールを使用して、最初の notfound ログと 2 番目の notfound ログの違いを確認します。

これらのファイルに多数の相違点が見られる場合、断続的な問題が明らかです (注: 1 回目と 2 回目の再インデックス作成の間にデータベースに新しいオブジェクトが作成されている場合、いくつかの相違点が予想されます)。

問題が断続的に発生する場合は、SOLR トランザクションが正しくコミットされていないという点で、アプリケーション コードが最も確実に指摘されています。

インデックスを作成するたびに、同じドキュメントが一貫して欠落する

この時点で、SOLR インデックスから見つかったドキュメントと、Lucene インデックスに含まれていないドキュメントを比較する必要があります。通常、オブジェクトのフィールドごとの比較では、ドキュメントをインデックスに追加するときに問題を引き起こす可能性があるいくつかの疑わしい値が変わり始めます。

疑わしいフィールドをすべて削除してから、全体のインデックスを再度作成してみてください。ドキュメントのインデックス作成がまだ失敗しているかどうかを確認します。これがうまくいった場合は、削除したフィールドの再導入を開始し、問題のあるフィールドを特定できるかどうかを確認してください。

于 2012-06-04T14:39:31.213 に答える