Apache Nutch 2.2.1 用の独自のプラグインを作成して、選択したサイトから画像、ビデオ、およびポッドキャストをクロールしました (シードには 180 個の URL があります)。このメタデータを hBase ストアに配置し、インデックス (Solr) に保存したいと考えています。保存するメタデータがたくさんあります (Web ページ + 画像 + ビデオ + ポッドキャスト)。
プロセス全体(注入、生成、フェッチ、解析...そして最後にsolrindexと重複排除)にNutchスクリプトのビン/クロールを使用していますが、1つの問題があります。このスクリプトを初めて実行すると、インデックスに約 6000 のドキュメント (画像用に 3700 ドキュメント、Web ページ用に 1700 ドキュメント、残りのドキュメントはビデオとポッドキャスト用) が保存されます。大丈夫です...
しかし...
スクリプトを 2 回目、3 回目などと実行すると、インデックスはドキュメントの数を増やしません (まだ 6000 ドキュメントがあります) が、hBase テーブルに格納されている行数は増加します (現在 97383 行あります)。 )...
問題はどこにありますか?私はこの問題と長い間戦っていますが、わかりません...参考になる場合は、これがsolrconfix.xml http://pastebin.com/uxMW2nuqの構成であり、これが私のnutch-site.xml httpです: //pastebin.com/4bj1wdmT
ログを調べると、次のとおりです。
SEVERE: auto commit error...:java.lang.IllegalStateException: this writer hit an OutOfMemoryError; cannot commit
at org.apache.lucene.index.IndexWriter.prepareCommitInternal(IndexWriter.java:2668)
at org.apache.lucene.index.IndexWriter.commitInternal(IndexWriter.java:2834)
at org.apache.lucene.index.IndexWriter.commit(IndexWriter.java:2814)
at org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:529)
at org.apache.solr.update.CommitTracker.run(CommitTracker.java:216)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)