Я пытаюсь создать крошечный инкрементальный сканер для всей сети, используя Apache Nutch и Solr. На данный момент я предполагаю, что я запускаю его на одной машине и где огромное количество URL, поэтому я не могу сканировать их все. Это должно быть отказоустойчиво, и его должно быть легко восстановить, если что-то не получается.
Для сканирования я делаю следующую инициализацию:
bin/nutch inject crawl/crawldb urls
bin/nutch generate crawl/crawldb crawl/segments
Затем в бесконечном l oop I сделаю:
bin/nutch generate crawl/crawldb crawl/segments -topN 1000
s1=`ls -d crawl/segments/2* | tail -1`
echo $s1
bin/nutch fetch $s1
bin/nutch parse $s1
bin/nutch updatedb crawl/crawldb $s1
bin/nutch invertlinks crawl/linkdb -dir crawl/segments
bin/nutch index crawl/crawldb/ -linkdb crawl/linkdb/ $s1 -filter -normalize -deleteGone
bin/nutch dedup crawl/crawldb/
bin/nutch clean crawl/crawldb/ http://localhost:8983/solr
По этому поводу у меня есть пара вопросов:
Это вообще оптимальное решение?
В случае сбоя Solr и необходимости начать сканирование с самого начала, могу ли я просто сделать bin/nutch index crawl/crawldb/ -linkdb crawl/linkdb/ $s1 -filter -normalize -deleteGone
для каждого существующего сегмента?
Как я могу отсканировать сбойный сегмент ?
Должны ли быть скопированы все данные внутри папки сегмента. Или что-то может быть удалено для экономии места?
Будет ли работать этот дополнительный обход при настройке сканирования? (поэтому настройка db.fetch.schedule.class / db.fetch.interval.default / db.fetch.schedule.adaptive. *)