O NutchCzęste pytaniaDeweloperzyDarowizny
 
 
Podręcznik

Wymagania

  1. Zalecane jest użycie Java 1.4.x, wersji Sun lub IBM dla platformy Linux. Ustaw zmienną środowiskową NUTCH_JAVA_HOME tak, żeby wskazywała na katalog główny instalacji Java.
  2. Apache Tomcat 4.x.
  3. Dla platformy Win32, środowisko Cygwin, potrzebne ze względu na powłokę poleceń. (Jeśli planujesz używać CVS z pakietu Cygwin, nie zapomnij zaznaczyć CVS i OpenSSH podczas instalacji. Zajdują się one w kategoriach "Devel" i "Net").
  4. Około gigabajta wolnej przestrzeni dyskowej, szybki dostęp do Internetu, i około jednej godziny.

Zaczynamy

Po pierwsze, musisz uzyskać kopię kodu Nutch. Możesz ściągnąć oficjalną wersję z http://www.nutch.org/release/. Rozpakuj archiwum i przejdź do głównego katalogu dystrybucji. Możesz również wziąć kod źródłowy z CVS i skompilować wersję binarną przy użyciu Ant.

Następnie wykonaj następujące polecenie:

bin/nutch
Wyświetli ono dokumentację skryptu poleceń Nutch.

Teraz jesteśmy gotowi do pobierania stron ("crawling"). Istnieją dwa warianty pobierania:

  1. Pobieranie z intranetu, przy pomocy polecenia crawl.
  2. Pobieranie z całej sieci Internet, gdzie ma się więcej kontroli nad procesem, i przy użyciu poleceń niższego poziomu: inject, generate, fetch oraz updatedb.

Pobieranie z intranetu

Ten sposób pobierania jest właściwszy wtedy, gdy planujemy pobrać nie więcej niż około 1 miliona stron pochodzących z kilku serwerów.

Intranet: Konfiguracja

W celu poprawnej konfiguracji dla pobierania z intranetu musisz:
  1. Utworzyć plik tekstowy zawierający listę głównych odnośników URL. Na przykład, żeby pobrać strony z serwera nutch.org możesz utworzyć plik o nazwie urls zawierający wyłącznie odnośnik do strony domowej. Wszystkie pozostałe strony powinny być powiązane z tą stroną. A zatem plik urls wyglądałby następująco:
    http://www.nutch.org/
    
  2. Otworzyć plik conf/crawl-urlfilter.txt w edytorze i zamienić tekst MY.DOMAIN.NAME na nazwę domeny, z której chcesz pobierać strony. Na przykład, jeśli chcesz ograniczyć pobieranie to domeny nutch.org, to odpowiedni wiersz pliku powininen wyglądać tak:
    +^http://([a-z0-9]*\.)*nutch.org/
    
    To wyrażenie pasuje do dowolnego odnośnika z domeny nutch.org.

Intranet: Uruchomienie pobierania

Po dokonaniu konfiguracji uruchomienie pobierania jest łatwe. Po prostu użyj polecenia "crawl". Można podać następujące opcje:
  • -dir dir nazwa katalogu, gdzie zostanie umieszczony wynik.
  • -depth depth wskazuje maksymalny poziom zagłębienia odnośników do stron, które mają zostać pobrane, liczony od strony głównej.
  • -delay delay ustala liczbę sekund pomiędzy kolejnymi pobraniami z tego samego serwera.
  • -threads threads ustala liczbę wątków, które będą równolegle pobierać strony.
Na przykład typowe wywołanie może wyglądać następująco:
bin/nutch crawl urls -dir crawl.test -depth 3 >& crawl.log
Zazwyczaj uruchamia się pobieranie najpierw na próbę, z małymi wartościami parametru "depth", żeby sprawdzić czy pobierane są właściwe strony. Kiedy już upewnimy się, że konfiguracja jest prawidłowa, to stosowna wielkość tego parametru dla pełnego pobierania wynosi około 10.

Kiedy pobieranie zostanie już zakończone, przejdź do części "Wyszukiwanie" znajdującej się dalej.

Pobieranie z całej sieci Internet

Pobieranie z całej sieci zostało zaprojektowane tak, aby móc obsłużyć duże ilości pobieranych stron, gdzie proces pobierania może trwać tygodniami i działać na wielu maszynach jednocześnie.

Internet: Główne pojęcia

Nutch przechowuje dane dwóch rodzajów:
  1. Baza stron WWW (WebDB). Zawiera ona informacje o wszystkich stronach znanych wyszukiwarce, oraz o połączeniach pomiędzy nimi.
  2. Zestaw segmentów danych. Segment jest to kolekcja stron WWW, pobranych i zindeksowanych jako jeden zestaw. Segment zawiera następujące rodzaje danych:
    • fetchlist to plik opisujący zestaw stron do pobrania
    • fetcher output to zestaw plików zawierający treść pobranych stron
    • index zawiera pełnotekstowy indeks stron w formacie Lucene.
W przykładach poniżej nasza baza stron WWW będzie się znajdować w katalogu db, a nasze segmenty danych będą w katalogu segments:
mkdir db
mkdir segments

Internet Inicjalizacja Bazy Stron WWW

Do utworzenia nowej, pustej bazy, stosujemy narzędzie administracyjne:
bin/nutch admin db -create
Narzędzie Injector dodaje adresy stron do bazy danych. Dodajmy adresy pochodzące z katalogu DMOZ - Open Directory. Najpierw musimy ściągnąć i rozpakować plik zawierający listę wszystkich stron skatalogowanych w DMOZ. (Plik ten ma ponad 200MB, więc zajmie to parę minut.)
wget http://rdf.dmoz.org/rdf/content.rdf.u8.gz
gunzip content.rdf.u8.gz
Następnie dodamy losowo wybrany podzbiór tych stron to naszej bazy. (Używamy losowej próbki, żeby wszyscy ci co postępują według tego podręcznika nie obciążali tych samych serwerów.) Katalog DMOZ zawiera około 3 milionów adresów. Dodamy jeden na 3000, więc w rezultacie otrzymamy około 1000 adresów:
bin/nutch inject db -dmozfile content.rdf.u8 -subset 3000
Ten krok również zabiera kilka minut, ponieważ cały plik musi zostać przetworzony.

W rezultacie otrzymamy bazę stron WWW zawierającą około 1000 adresów jeszcze nie pobranych stron.

Internet: Pobieranie

W celu ropozczęcia pobierania najpierw musimy na podstawie bazy stron utworzyć listę adresów do pobrania (tzw. "fetchlist"):
bin/nutch generate db segments
To polecenie tworzy listę stron do pobrania. Lista ta zostaje umieszczona w nowo utworzonym katalogu segmentów. Katalog ten otrzymuje nazwę reprezentującą czas utworzenia listy. Zachowamy nazwę tego katalogu w zmiennej środowiskowej: >s1:
s1=`ls -d segments/2* | tail -1`
echo $s1
Teraz możemy uruchomić proces pobierania tego segmentu przy pomocy polecenia:
bin/nutch fetch $s1
Kiedy ten proces się zakończy, uaktualniamy bazę stron na podstawie rezultatów pobierania:
bin/nutch updatedb db $s1
W tym momencie w bazie danych znajdą się dane na temat wszystkich stron połączonych odnośnikami do stron pochodzących z początkowego zestawu.

Następnie uruchamiamy pięciokrotną analizę bazy w celu ustalenia priorytetów stron, które powinny być pobrane w następnej kolejności:

bin/nutch analyze db 5
Następnie tworzymy nowy segment z listą 1000 stron do pobrania, które uzyskały najwyższy priorytet:
bin/nutch generate db segments -topN 1000
s2=`ls -d segments/2* | tail -1`
echo $s2

bin/nutch fetch $s2
bin/nutch updatedb db $s2
bin/nutch analyze db 2
Pobierzmy w ten sam sposób jeszcze raz następne 1000 stron:
bin/nutch generate db segments -topN 1000
s3=`ls -d segments/2* | tail -1`
echo $s3

bin/nutch fetch $s3
bin/nutch updatedb db $s3
bin/nutch analyze db 2
Do tego momemntu pobraliśmy już parę tysięcy stron. Utwórzmy więc ich indeks.

Internet: Indeksowanie

W celu utworzenia indeksu index dla każdego segmentu, stosujemy następujące polecenie:
bin/nutch index $s1
bin/nutch index $s2
bin/nutch index $s3
Następnie, zanim zaczniemy używać indeksów do wyszukiwania, musimy usunąć z niego duplikaty stron. Robimy to tak:
bin/nutch dedup segments dedup.tmp
Teraz jesteśmy gotowi do wyszukiwania!

Wyszukiwanie

Zanim będziesz mógł wyszukiwać, musisz umieścić archiwum WAR w odpowiednim katalogu twojego serwera servlet-ów. (Jeśli używałeś kodu z CVS, to najpierw musisz skompilować plik WAR poleceniem ant war.)

Zakładając, że zainstalowałeś serwer Tomcat jako ~/local/tomcat, to plik WAR można zainstalować poleceniami:
rm -rf ~/local/tomcat/webapps/ROOT*
cp nutch*.war ~/local/tomcat/webapps/ROOT.war

(UWAGA: Aplikacja Nutch w chwili obecnej wymaga instalacji w kontekście ROOT).

Aplikacja standardowo korzysta z indeksów z podkatalogu ./segments, względem katalogu z którego startujemy serwer Tomcat. Jeśli pobierałeś strony z intranetu poleceniem "crawl" zmień aktualny katalog na ten, gdzie jest wynik pobierania, w przeciwnym przypadku nie zmieniając aktualnego katalogu wydaj następujące polecenie:
~/local/tomcat/bin/catalina.sh start
Następnie odwiedź stronę http://localhost:8080/. Miłej zabawy!

    Creative Commons License
Except where otherwise noted,
this site is licensed under a Creative Commons License.
ca | de | en | es | fi | fr | hu | jp | ms | nl | pl | pt | sv | th | zh
sf.net