Перечитать с орехом - PullRequest
       60

Перечитать с орехом

0 голосов
/ 14 сентября 2018

У меня есть вопрос о повторном сканировании с Nutch 1.15 (или 1.14 тоже)

Я прочитал статью Паскаля Димассимо и настроил свойство AdaptiveFetchSchedule

Я протестировал скрипт повторного сканирования в вики без особых результатов. Действительно после дампа базы данных crawldb я вижу Retry interval со значением, определенным с db.fetch.interval.default

У меня есть несколько вопросов:

Почему в примере повторного сканирования сценария шаг разбора не выполняется?

Почему, когда я запускаю второй обход с помощью bin/crawl или recrawl.sh, все URL повторно анализируются, несмотря на retryinterval = 1day

Не могли бы вы подробно описать шаги, которые необходимо выполнить для автоматизации сканирования и индексации с нуля на solr. Сканирование довольно длительное, и я полагаю, что при эффективном повторном сканировании оно может быть быстрым и анализировать только обновленные URL-адреса

спасибо

Nutch-сайт

<property>
<name>db.fetch.interval.default</name>
<value>86400</value>
<description>The default number of seconds between re-fetches of a page (30 days).
</description>
</property>

<property>
<name>db.fetch.schedule.class</name>
<value>org.apache.nutch.crawl.AdaptiveFetchSchedule</value>
<description>The implementation of fetch schedule. DefaultFetchSchedule simply adds the original fetchInterval to the last fetch time, regardless of page changes, whereas AdaptiveFetchSchedule (see below) tries to adapt to the rate at which a given page is changed.</description>
</property>

Recrawl.sh

depth=2
threads=50
adddays=1
#topN=50 #Comment this statement if you don't want to set topN value

# Arguments for rm and mv
RMARGS="-rf"
MVARGS="--verbose"

# Parse arguments
if [ "$1" == "safe" ]
then
  safe=yes
fi

if [ -z "$NUTCH_HOME" ]
then
  NUTCH_HOME=.
  echo runbot: $0 could not find environment variable NUTCH_HOME
  echo runbot: NUTCH_HOME=$NUTCH_HOME has been set by the script 
else
  echo runbot: $0 found environment variable NUTCH_HOME=$NUTCH_HOME 
fi


if [ -n "$topN" ]
then
  topN="-topN $topN"
else
  topN=""
fi

steps=8
echo "----- Inject (Step 1 of $steps) -----"
$NUTCH_HOME/bin/nutch inject crawl/crawldb urls

echo "----- Generate, Fetch, Parse, Update (Step 2 of $steps) -----"
for((i=0; i < $depth; i++))
do
  echo "--- Beginning crawl at depth `expr $i + 1` of $depth ---"
  $NUTCH_HOME/bin/nutch generate crawl/crawldb crawl/segments $topN \
      -adddays $adddays
  if [ $? -ne 0 ]
  then
    echo "runbot: Stopping at depth $depth. No more URLs to fetch."
    break
  fi
  segment=`ls -d crawl/segments/* | tail -1`

  $NUTCH_HOME/bin/nutch fetch $segment -threads $threads
if [ $? -ne 0 ]
  then
    echo "runbot: fetch $segment at depth `expr $i + 1` failed."
    echo "runbot: Deleting segment $segment."
    rm $RMARGS $segment
    continue
  fi

  $NUTCH_HOME/bin/nutch parse $segment

  $NUTCH_HOME/bin/nutch updatedb crawl/crawldb $segment
done

echo "----- Merge Segments (Step 3 of $steps) -----"
$NUTCH_HOME/bin/nutch mergesegs crawl/MERGEDsegments -dir crawl/segments/ -filter -normalize
if [ "$safe" != "yes" ]
then
  rm $RMARGS crawl/segments
else
  rm $RMARGS crawl/BACKUPsegments
  mv $MVARGS crawl/segments crawl/BACKUPsegments
fi

mv $MVARGS crawl/MERGEDsegments crawl/segments

echo "----- Invert Links (Step 4 of $steps) -----"
$NUTCH_HOME/bin/nutch invertlinks crawl/linkdb -dir crawl/segments/
echo "----- Index (Step 5 of $steps) -----"
$NUTCH_HOME/bin/nutch index crawl/crawldb -linkdb crawl/linkdb crawl/segments/* -filter -normalize -deleteGone

echo "----- Dedup (Step 6 of $steps) -----"
$NUTCH_HOME/bin/nutch dedup crawl/crawldb

echo "----- Merge Indexes (Step 7 of $steps) -----"
#$NUTCH_HOME/bin/nutch merge crawl/NEWindex crawl/NEWindexes

echo "----- Loading New Index (Step 8 of $steps) -----"
service solr stop

if [ "$safe" != "yes" ]
then
  rm $RMARGS crawl/NEWindexes
  rm $RMARGS crawl/index
else
  rm $RMARGS crawl/BACKUPindexes
  rm $RMARGS crawl/BACKUPindex
  mv $MVARGS crawl/NEWindexes crawl/BACKUPindexes
  mv $MVARGS crawl/index crawl/BACKUPindex
fi

#mv $MVARGS crawl/NEWindex crawl/index

service solr start
echo "runbot: FINISHED: Crawl completed!"

РЕДАКТИРОВАТЬ: Я добавляю некоторые разъяснения Я пытаюсь только с одной страницы. Я запускаю первое сканирование с адаптивными параметрами и интервалом = 30 минут (сканирование страницы занимает несколько секунд) После 2 или 3 ползаний я вижу

Generator: 0 records selected for fetching, exiting...
runbot: Stopping at depth 1. No more URLs to fetch.

Я полагаю, это из-за адаптивных настроек, потому что на странице не было сделано никаких изменений, это правда?

Затем я изменяю страницу, затем снова выполняю сканирование. Но здесь у меня то же сообщение, что и раньше, и страница не анализируется повторно. Если я выполняю readdb, информация хорошая, но последнее измененное значение всегда равно 0. Почему?

Status: 6 (db_notmodified)
Fetch time: Tue Sep 18 16:20:41 CEST 2018
Modified time: Tue Sep 18 15:59:05 CEST 2018
Retries since fetch: 0
Retry interval: 840 seconds (0 days)
Score: 4.0
Signature: 17a6530070b6d13a6da7b15193c038fb
Metadata:
        _pst_=success(1), lastModified=0
        _rs_=46
        Content-Type=application/xhtml+xml
        nutch.protocol.code=200
...