Wdrażanie wtyczki Apache Nutch Indexer

Możesz skonfigurować Google Cloud Search tak, aby udostępniać użytkownikom treści internetowe, wdrażając wtyczkę indeksującą Cloud Search dla Apache Nutch, czyli open source'owego robota internetowego.

Po rozpoczęciu indeksowania sieci Apache Nutch przeszukuje internet i używa wtyczki indeksującej do przesyłania oryginalnych binarnych (lub tekstowych) wersji treści dokumentów do interfejsu Google Cloud Search API. Interfejs Cloud Search API indeksuje treści i wyświetla wyniki użytkownikom.

Istotne kwestie

Zanim wdrożysz wtyczkę indeksującą, zapoznaj się z tymi kwestiami.

Wymagania systemowe

Wymagania systemowe
System operacyjny Tylko w systemie Linux:
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10 (64-bitowy)
Oprogramowanie
  • Apache Nutch w wersji 1.15. Oprogramowanie wtyczki indeksującej zawiera tę wersję Nutch.
  • Java JRE 1.8 zainstalowana na komputerze, na którym będzie działać wtyczka indeksująca
Typy dokumentów Apache Tika Obsługiwane formaty dokumentów w Apache Tika 1.18

Wdrażanie wtyczki indeksującej

W tych krokach opisujemy, jak zainstalować wtyczkę indeksującą i skonfigurować jej komponenty, aby przeszukiwać adresy URL i zwracać wyniki do Cloud Search.

Wymagania wstępne

Zanim wdrożysz wtyczkę indeksującą, zbierz informacje wymagane do połączenia Cloud Search ze źródłem danych:

Krok 1. Utwórz i zainstaluj oprogramowanie wtyczki oraz Apache Nutch

  1. Sklonuj z GitHub repozytorium wtyczki indeksującej.

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. Sprawdź wersję wtyczki indeksującej, której potrzebujesz:

    $ git checkout tags/v1-0.0.5
  3. Utwórz wtyczkę indeksującą.

    $ mvn package

    Aby pominąć testy podczas tworzenia wtyczki, użyj polecenia mvn package -DskipTests.

  4. Pobierz Apache Nutch 1.15 i postępuj zgodnie z instrukcjami instalacji Apache Nutch.

  5. Wyodrębnij target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip do folderu. Skopiuj folder plugins/indexer-google-cloudsearch do folderu Apache Nutch plugins (apache-nutch-1.15/plugins).

Krok 2. Skonfiguruj wtyczkę indeksującą

Aby skonfigurować wtyczkę, utwórz plik o nazwie plugin-configuration.properties. Aby uzyskać dostęp do źródła danych Cloud Search, plik konfiguracji musi zawierać te parametry:

Ustawienie Parametr
Identyfikator źródła danych api.sourceId = 1234567890abcdef
Wymagane. Identyfikator źródła Cloud Search, który administrator Google Workspace skonfigurował dla wtyczki indeksującej.
Konto usługi api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Wymagane. Plik klucza konta usługi Cloud Search, który administrator Google Workspace utworzył na potrzeby wtyczki indeksującej.

Poniżej znajdziesz przykładowy plik konfiguracyjny:

# data source access
api.sourceId=1234567890abcdef
api.serviceAccountPrivateKeyFile=./PrivateKey.json

Plik konfiguracyjny może też zawierać parametry, które kontrolują działanie wtyczki, np. sposób, w jaki wtyczka przesyła dane do interfejsu Cloud Search API, oraz sposób wypełniania metadanych i danych strukturalnych. Opisy tych parametrów znajdziesz w sekcji Parametry łącznika dostarczonego przez Google.

Krok 3. Skonfiguruj Apache Nutch

  1. Otwórz conf/nutch-site.xml i dodaj te parametry:

    Ustawienie Parametr
    Wtyczka zawiera plugin.includes = text

    Wymagane. Lista wtyczek do użycia. Musi zawierać co najmniej:

    • index-basic
    • index-more
    • indexer-google-cloudsearch
    conf/nutch-default.xml podaje wartość domyślną, ale musisz do niej ręcznie dodać indexer-google-cloudsearch.
    Nazwy metatagów metatags.names = text

    Opcjonalnie. Rozdzielana przecinkami lista tagów, które są mapowane na właściwości w odpowiednim schemacie źródła danych. Więcej informacji znajdziesz w artykule Nutch-parse metatags.

    Poniższy przykład pokazuje wymaganą modyfikację nutch-site.xml:

    <property>
      <name>plugin.includes</name>
      <value>protocol-(http|httpclient)|urlfilter-regex|index-(basic|more|metadata)|query-(basic|site|url|lang)|indexer-google-cloudsearch|nutch-extensionpoints|parse-(text|html|msexcel|msword|mspowerpoint|pdf|metatags)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|parse-(html|tika|metatags)|index-(basic|anchor|more|metadata)</value>
    </property>
    
  2. Otwórz conf/index-writers.xml i dodaj tę sekcję:

    <writer id="indexer_google_cloud_search_1" class="org.apache.nutch.indexwriter.gcs.GoogleCloudSearchIndexWriter">
      <parameters>
        <param name="gcs.config.file" value="path/to/sdk-configuration.properties"/>
      </parameters>
      <mapping>
        <copy />
        <rename />
        <remove />
      </mapping>
    </writer>
    

    Sekcja <writer> zawiera te parametry:

    Ustawienie Parametr
    Ścieżka do pliku konfiguracji Cloud Search gcs.config.file = path

    Wymagane. Pełna (bezwzględna) ścieżka do pliku konfiguracji Cloud Search.

    Format przesyłania gcs.uploadFormat = text

    Opcjonalnie. Format, w jakim wtyczka przesyła zawartość dokumentu do interfejsu Cloud Search API. Prawidłowe wartości to:

    • raw: promuje oryginalne, nieprzekonwertowane treści.
    • text: przesyła wyodrębnione treści tekstowe. Wartość domyślna to raw.

Krok 4. Skonfiguruj indeksowanie sieci

Zanim rozpoczniesz indeksowanie witryny, skonfiguruj je tak, aby obejmowało tylko informacje, które Twoja organizacja chce udostępnić. Więcej informacji znajdziesz w samouczku dotyczącym Nutch.

  1. Skonfiguruj początkowe adresy URL.

    Adresy URL rozpoczęcia określają, od którego miejsca robot indeksujący zaczyna indeksowanie treści. Robot musi mieć możliwość dotarcia do wszystkich treści, które chcesz uwzględnić, poprzez klikanie linków.

    Aby skonfigurować początkowe adresy URL:

    1. Przejdź do katalogu instalacyjnego Nutch:
      $ cd ~/nutch/apache-nutch-X.Y/
    2. Utwórz katalog adresów URL:
      $ mkdir urls
    3. Utwórz plik o nazwie seed.txt i wpisz w nim po jednym adresie URL w wierszu.
  2. Skonfiguruj reguły dotyczące śledzenia i niestosowania śledzenia.

    Reguły dotyczące adresów URL określają, które adresy URL są indeksowane przez robota. Reguły „nie śledź” wykluczają adresy URL ze skanowania.

    Aby skonfigurować te reguły:

    1. Przejdź do katalogu instalacyjnego Nutch.
    2. Edytuj: conf/regex-urlfilter.txt
      $ nano conf/regex-urlfilter.txt
    3. Wpisz wyrażenia regularne z prefiksem „+” lub „-”:

      # skip file extensions
      -\.(gif|GIF|jpg|JPG|png|PNG|ico)
      
      # skip protocols (file: ftp: and mailto:)
      -^(file|ftp|mailto):
      
      # allow urls starting with https://support.google.com/gsa/
      +^https://support.google.com/gsa/
      
      # accept anything else
      #+.
      
  3. Edytuj skrypt indeksowania.

    Jeśli parametr gcs.uploadFormat nie występuje lub ma wartość „raw”, musisz dodać argumenty -addBinaryContent -base64 do polecenia nutch index. Te argumenty informują moduł indeksujący Nutch, że ma uwzględniać treści binarne w formacie Base64.

    1. Otwórz skrypt crawlapache-nutch-1.15/bin.
    2. Dodaj opcje zgodnie z tym przykładem:

            if $INDEXFLAG; then
                echo "Indexing $SEGMENT to index"
                __bin_nutch index $JAVA_PROPERTIES "$CRAWL_PATH"/crawldb -addBinaryContent -base64 -linkdb "$CRAWL_PATH"/linkdb "$CRAWL_PATH"/segments/$SEGMENT
      
                echo "Cleaning up index if possible"
                __bin_nutch clean $JAVA_PROPERTIES "$CRAWL_PATH"/crawldb
            else
                echo "Skipping indexing ..."
      

Krok 5. Rozpocznij indeksowanie witryny i przesyłanie treści

Po skonfigurowaniu wtyczki indeksującej możesz uruchomić ją w trybie lokalnym. Użyj skryptów z ./bin, aby wykonać zadanie indeksowania.

W przykładzie poniżej założono, że komponenty znajdują się w katalogu lokalnym. Uruchom Nutch z katalogu apache-nutch-1.15:

$ bin/crawl -i -s urls/ crawl-test/ 5

Dzienniki indeksowania są dostępne w terminalu lub w katalogu logs/. Aby skierować dane wyjściowe logowania, edytuj conf/log4j.properties.