Crawler4j オープン ソースWeb クローラーを理解しようとしています。ところで、私はいくつかの疑問を持っていますが、それは次のとおりです。
質問:-
CountersクラスでStatisticsDBは何をしているのですか。以下のコード部分を説明してください。
public Counters(Environment env, CrawlConfig config) throws DatabaseException { super(config); this.env = env; this.counterValues = new HashMap<String, Long>(); /* * When crawling is set to be resumable, we have to keep the statistics * in a transactional database to make sure they are not lost if crawler * is crashed or terminated unexpectedly. */ if (config.isResumableCrawling()) { DatabaseConfig dbConfig = new DatabaseConfig(); dbConfig.setAllowCreate(true); dbConfig.setTransactional(true); dbConfig.setDeferredWrite(false); statisticsDB = env.openDatabase(null, "Statistics", dbConfig); OperationStatus result; DatabaseEntry key = new DatabaseEntry(); DatabaseEntry value = new DatabaseEntry(); Transaction tnx = env.beginTransaction(null, null); Cursor cursor = statisticsDB.openCursor(tnx, null); result = cursor.getFirst(key, value, null); while (result == OperationStatus.SUCCESS) { if (value.getData().length > 0) { String name = new String(key.getData()); long counterValue = Util.byteArray2Long(value.getData()); counterValues.put(name, counterValue); } result = cursor.getNext(key, value, null); } cursor.close(); tnx.commit(); } }
私の知る限り、クロールされた URL が保存されるため、クローラーがクラッシュした場合に役立ちます。その後、Web クローラーを最初から開始する必要はありません。 上記のコードを1行ずつ説明してください。
2. Crawlers4j は SleepyCat を使用して中間情報を保存するため、SleepyCat を説明する適切なリンクが見つかりませんでした。ですから、SleepyCat の基本を学べる良いリソースを教えてください。(上記のコードで使用されているトランザクション、カーソルの意味がわかりません)。
お願い助けて。あなたの親切な返事を探しています。