Ein Indexierungs-Plug-in für Apache Nutch bereitstellen

Dieser Leitfaden richtet sich an Google Cloud Search-Administratoren für das Apache Nutch Indexierungs-Plug-in, d. h. an jeden, der dafür verantwortlich ist, dieses Plug-in herunterzuladen, bereitzustellen, zu konfigurieren und zu verwalten. Hier wird davon ausgegangen, dass Sie mit den Linux-Betriebssystemen, den Grundlagen des Web-Crawlings und mit Apache Nutch vertraut sind.

In diesem Artikel finden Sie Anleitungen zu den folgenden Hauptaufgaben, die für das Deployment des Indexierungs-Plug-ins nötig sind:

  • Software für das Indexierungs-Plug-in herunterladen
  • Google Cloud Search konfigurieren
  • Apache Nutch und Web-Crawling konfigurieren
  • Web-Crawling und Upload von Inhalten starten

In dieser Anleitung erhalten Sie allerdings keine Informationen zu den Aufgaben, die der G Suite-Administrator durchführen muss, um Google Cloud Search mit dem Indexierungs-Plug-in für Nutch zu verknüpfen. Informationen zu diesen Aufgaben finden Sie in den Hilfeartikeln zum Thema Integration von Drittanbietern.

Übersicht über das Google Cloud Indexierungs-Plug-in für Apache Nutch

Standardmäßig können Sie mit Google Cloud Search in Anwendungen wie Google Docs und Gmail nach G Suite-Daten suchen und diese indexieren und bereitstellen. Wenn Sie das Indexierungs-Plug-in für den Open Source Web-Crawler Apache Nutch bereitstellen, sind diese Aktionen auch für Webinhalte möglich.

Konfigurationsattributdateien

Damit mithilfe des Indexierungs-Plug-ins Web-Crawls ausgeführt und Inhalte in die Indexierungs-API hochgeladen werden können, müssen Sie als Administrator des Indexierungs-Plug-ins während der Konfigurationsschritte bestimmte Informationen für den Connector angeben. Die dafür notwendigen Schritte werden in dieser Anleitung im Abschnitt Deployment beschrieben.

Damit das Indexierungs-Plug-in verwendet werden kann, müssen Sie Attribute in zwei Konfigurationsdateien festlegen:

  • nutch-site.xml: Einstellungen für den Web-Crawler von Apache Nutch
  • sdk-configuration.properties : Einstellungen für Google Cloud Search

Die Attribute in den Dateien ermöglichen die Kommunikation zwischen dem Indexierungs-Plug-in von Google Cloud Search und Apache Nutch.

Web-Crawling und Upload von Inhalten

Nachdem Sie die Konfigurationsdateien vorbereitet haben, können Sie das Web-Crawling starten. Das Web wird von Apache Nutch durchsucht und Dokumentinhalte werden ermittelt, die der Konfiguration entsprechen. Mit dem Indexierungs-Plug-in werden ursprüngliche binäre (oder Text-) Versionen von Dokumentinhalten in die Indexierungs-API von Google Cloud Search hochgeladen, wo sie indexiert und letztendlich Ihren Nutzern zur Verfügung gestellt werden.

Unterstützte Betriebssysteme

Das Google Cloud Search Indexierungs-Plug-in für Apache Nutch muss unter Linux installiert werden.

Unterstützte Apache Nutch-Version

Beim Google Cloud Search Indexierungs-Plug-in für Apache Nutch wird die Nutch-Version 1.14 unterstützt. Diese Version ist in der Software des Indexierungs-Plug-in enthalten.

Von Apache Tika unterstützte Dokumenttypen

Für die Apache Nutch-Version 1.14 wird die Version 1.17 von Apache Tika benötigt, um Inhalte zu parsen. Eine Liste der Dokumenttypen, die mit dem Apache Nutch Indexierungs-Plug-in indexiert werden können, finden Sie im Artikel zu den von Apache Tika unterstützten Dokumentformaten.

Unterstützung für ACLs

Im Indexierungs-Plug-in kann mithilfe von Zugriffssteuerungslisten der Zugriff auf Dokumente in der G Suite-Domain mit Zugriffssteuerungslisten (Access Control Lists, ACLs) gesteuert werden.

Wenn Standard-ACLs in der Plug-in-Konfiguration von Google Cloud Search aktiviert sind (defaultAcl.mode ist mit defaultAcl.* konfiguriert und nicht auf none festgelegt), wird zuerst versucht, mit dem Indexierungs-Plug-in eine Standard-ACL zu erstellen und anzuwenden.

Wenn Standard-ACLs nicht aktiviert sind, besteht über das Plug-in wieder Lesezugriff für die gesamte G Suite-Domain.

Ausführliche Beschreibungen der Konfigurationsparameter für ACLs finden Sie im Artikel zu den von Google bereitgestellten Connectorparametern.

Voraussetzungen

Für das Deployment des Indexierungs-Plug-in benötigen Sie die folgenden Komponenten:

  • Java JRE 1.8, installiert auf einem Computer, auf dem das Indexierungs-Plug-in ausgeführt werden soll
  • G Suite-Informationen, die erforderlich sind, um Beziehungen zwischen Google Cloud Search und Apache Nutch herzustellen:

    In der Regel erhalten Sie diese Anmeldedaten vom G Suite-Administrator der Domain.

Deployment

Führen Sie die folgenden grundlegenden Schritte aus, um das Indexierungs-Plug-in bereitzustellen:

  1. Apache Nutch und die Software für das Indexierungs-Plug-in installieren
  2. Google Cloud Search konfigurieren
  3. Apache Nutch konfigurieren
  4. Web-Crawling konfigurieren
  5. Web-Crawling und Upload von Inhalten starten

Schritt 1: Apache Nutch und die Software für das Indexierungs-Plug-in installieren

Die Software für das Indexierungs-Plug-in von Google Cloud Search muss auf einem Hostrechner installiert werden. Google bietet die Plug-in-Software in der folgenden vorgefertigten Binärdistribution an:

apache-nutch-1.14-v1-0.0.2-bin.tar.gz

In ihr ist auch das Google Cloud Search Connector SDK enthalten.

So installieren Sie Apache Nutch und das Google Cloud Search Indexierungs-Plug-in:

  1. Laden Sie das Indexierungs-Plug-in für Apache Nutch herunter.

  2. Entpacken Sie die Zip-Datei apache-nutch-1.14-v1-0.0.2-bin.tar.gz.
    Dadurch wird der Ordner "apache-nutch-1.14-SNAPSHOT" erstellt, der sowohl Apache Nutch als auch das Indexierungs-Plug-in von Google Cloud Search enthält.

Wenn Sie das Indexierungs-Plug-in für Apache Nutch bereitstellen möchten, müssen Sie eine Google Cloud Search-Konfigurationsdatei mit dem Namen sdk-configuration.properties erstellen. Sie muss Schlüssel/Wert-Paare enthalten, in denen die für den Connector erforderlichen Konfigurationsinformationen festgelegt werden.

In der Konfigurationsdatei müssen die folgenden Parameter angegeben werden, die für den Zugriff auf die Datenquelle von Google Cloud Search erforderlich sind.

Einstellung Parameter
Datenquellen-ID api.sourceId = 1234567890abcdef
Pflichtangabe. Die Google Cloud Search-Quellen-ID, die vom G Suite-Administrator eingerichtet wurde.
Dienstkonto api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Pflichtangabe. Die Schlüsseldatei des Google Cloud Search-Dienstkontos, die vom G Suite-Administrator für den Zugriff auf Indexierungs-Plug-ins erstellt wurde.

Im folgenden Beispiel sehen Sie eine Google Cloud Search-Konfigurationsdatei:

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

Sie kann auch einige andere für Google Cloud Search spezifische Konfigurationsparameter enthalten, die sich möglicherweise auf die Datenübertragung vom Indexierungs-Plug-in in die Google Cloud Search API auswirken. Beispiele für diese Parameter sind defaultAcl.* und batch.*. Weitere Informationen zu von Google bereitgestellten Verbindungsparametern

Sie können das Indexierungs-Plug-in so konfigurieren, dass bei der Indexierung von Daten auch Metadaten und strukturierte Daten übertragen werden. Die zu befüllenden Werte für Metadaten und strukturierte Daten können entweder aus Metatags in zu indexierenden HTML-Inhalten extrahiert oder aus in der Konfigurationsdatei hinterlegten Standardwerten entnommen werden.

Einstellung Parameter
Titel itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
Standardmäßig verwendet das Plug-in HTML title als Titel des zu indexierenden Dokuments. Wenn der Titel fehlt, können Sie entweder auf das Metadatenattribut verweisen, das den Wert enthält, der dem Dokumenttitel entspricht, oder einen Standardwert festlegen.
Zeitstempel "Erstellt am" itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
Das Metadatenattribut, das den Wert für den Zeitstempel der Erstellung eines Dokuments enthält
Zeitpunkt der letzten Änderung itemMetadata.updatetime.field=releaseDate
itemMetadata.updatetime.defaultValue=1940-01-17
Das Metadatenattribut, das den Wert für den Zeitstempel der letzten Änderung des Dokuments enthält
Dokumentsprache itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
Die Inhaltssprache der Dokumente, die indexiert werden sollen
Schema-Objekttyp itemMetadata.objectType=movie
Der Objekttyp, der von der Website verwendet wird, wie im Artikel Ein Schema erstellen und registrieren beschrieben. Wenn diese Eigenschaft nicht festgelegt ist, werden strukturierte Daten nicht vom Connector indexiert.

Hinweis: Dieses Konfigurationsattribut bezieht sich auf einen Wert, nicht auf ein Metadatenattribut. Die Suffixe .field und .defaultValue werden nicht unterstützt.

Datum/Uhrzeit-Formate

Die in Metadatenattributen erwarteten Formate werden in Datum/Uhrzeit-Formaten angegeben. Wenn dieser Parameter nicht in der Konfigurationsdatei enthalten ist, werden Standardwerte verwendet. In der folgenden Tabelle sehen Sie diese Parameter:

Einstellung

Parameter

Zusätzliche Muster für "Datum/Uhrzeit"

structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX

Eine durch semicolon getrennte Liste zusätzlicher java.time.format.DateTimeFormatter-Muster. Diese werden verwendet, wenn Stringwerte für Datums- oder Datum/Uhrzeit-Felder in den Metadaten oder im Schema geparst werden. Standardmäßig ist die List leer, aber Einträge in den Formaten RFC 3339 und RFC 1123 werden immer unterstützt.

Schritt 3: Apache Nutch konfigurieren

In der Tar-Datei apache-nutch-1.14-SNAPSHOT-bin.tar.gz ist die Konfigurationsdatei von Apache Nutch enthalten: nutch-site.xml.

Darin finden Sie die erforderlichen Werte für das Attribut plugin.includes:

index-basic
index-more
indexer-google-cloud-search

Sie müssen nutch-site.xml ändern, indem Sie die folgenden Parameter hinzufügen, die für die Interaktion mit Google Cloud Search erforderlich sind.

Einstellung Parameter
Pfad zur Konfigurationsdatei von Google Cloud Search gcs.config.file = TBS Pflichteingabe. Der vollständige (absolute) Pfad zur Konfigurationsdatei von Google Cloud Search.
Upload-Format gcs.uploadFormat = text Optional. Das Format, in dem das Indexierungs-Plug-in Dokumentinhalt an die Indexierungs-API von Google Cloud Search überträgt. Gültige Werte sind:
  • raw: Der ursprüngliche, nicht konvertierte Dokumentinhalt wird vom Indexierungs-Plug-in übertragen.
  • text: Extrahierter Textinhalt wird vom Indexierungs-Plug-in übertragen. Der Standardwert ist raw.

Im folgenden Beispiel sehen Sie die erforderliche Änderung an nutch-site.xml.

<property>
  <name>gcs.config.file</name>
  <value>/path/to/sdk-configuration.properties</value>
  <description>Location of GCS Connector SDK configuration file.</description>
</property>

Schritt 4: Web-Crawling konfigurieren

Bevor Sie einen Web-Crawl starten, müssen Sie den Crawler so konfigurieren, dass in ihm nur Informationen enthalten sind, die Ihre Organisation in den Suchergebnissen verfügbar machen möchte. Dieser Abschnitt enthält grundlegende Informationen zu folgenden Schritten:

Ausführlichere Informationen zum Einrichten eines Web-Crawls finden Sie im Nutch-Tutorial.

Start-URLs einrichten

Mit Start-URLs wird bestimmt, an welchem Punkt begonnen werden soll, Ihre Inhalte mit dem Web-Crawler von Apache Nutch zu erfassen. Der Web-Crawler sollte fähig sein, alle Inhalte zu erreichen, die Sie in einem bestimmten Crawl durchsuchen lassen möchten, indem er die Links von einer oder mehrerer der Start-URLs verfolgt. Start-URLs sind erforderlich.

So richten Sie Start-URLs ein:

  1. Ändern Sie das Arbeitsverzeichnis in das Installationsverzeichnis für Nutch:
    $ cd ~/nutch/apache-nutch-X.Y/
  2. Erstellen Sie ein Verzeichnis für URLs:
    $ mkdir urls
  3. Erstellen Sie eine Datei mit dem Namen seed.txt und geben Sie URLs ein (eine pro Zeile):
    $ nano urls/seed.txt

Regeln für das Ein- und Ausschließen von Links einrichten

URL-Regeln für das Einschließen von Links steuern, welche URLs erfasst und in den Google Cloud Search-Index aufgenommen werden. Vor dem Crawlen von URLs werden diese vom Web-Crawler anhand der URL-Regeln für das Einschließen von Links geprüft. Nur URLs, die diesen Regeln entsprechen, werden gecrawlt und indexiert.

Mit Regeln für das Ausschließen von Links wird verhindert, dass URLs gecrawlt und in den Google Cloud Search-Index aufgenommen werden. Wenn eine URL ein Nicht-Crawlen-Muster enthält, crawlt der Web-Crawler diese nicht.

So richten Sie URL-Regeln für das Ein- und Ausschließen von Links ein:

  1. Ändern Sie das Arbeitsverzeichnis in das Installationsverzeichnis für Nutch:
    $ cd ~/nutch/apache-nutch-X.Y/
  2. Bearbeiten Sie conf/regex-urlfilter.txt, um die Regeln für das Ein- bzw. Ausschließen von Links zu ändern:
    $ nano conf/regex-urlfilter.txt
  3. Fügen Sie URL-Muster für das Ein- bzw. Ausschließen von Links, Erweiterungen usw. reguläre Ausdrücke (offenes Ende ist in Ordnung) mit dem Präfix "+" oder "-" hinzu, wie in den folgenden Beispielen gezeigt.

Beispiele:

# 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
# (commented out due to the single url-prefix allowed above)
#+.

Crawl-Skript bearbeiten

Wenn der Parameter gcs.uploadFormat fehlt oder auf "raw" gesetzt ist, müssen Sie die Argumente -addBinaryContent -base64 hinzufügen, die an den Befehl nutch index übergeben werden. Sie führen dazu, dass vom Nutch Indexierungs-Modul binärer Inhalt in Base64 aufgenommen wird, wenn das Indexierungs-Plug-in aufgerufen wird. Das Skript "./bin/crawl" verfügt standardmäßig nicht über diese Argumente.

Bearbeiten Sie crawl.sh in apache-nutch-1.14-SNAPSHOT/bin und fügen Sie Folgendes hinzu:

      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 ..."

Schritt 5: Web-Crawling und Upload von Inhalten starten

Nachdem Sie das Indexierungs-Plug-in installiert und eingerichtet haben, können Sie es im lokalen Modus eigenständig ausführen. Verwenden Sie die Skripts von ./bin, um einen Crawling-Job oder einzelne Nutch-Befehle auszuführen.

Für das folgende Beispiel wird davon ausgegangen, dass sich die erforderlichen Komponenten im lokalen Verzeichnis eines Linux-Systems befinden. Führen Sie Nutch mit dem folgenden Befehl aus dem Ordner apache-nutch-1.14-SNAPSHOT aus:

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

Crawl-Protokolle sind in der Standardausgabe (Terminal) oder im Verzeichnis logs/ verfügbar. Bearbeiten Sie conf/log4j.properties, um die Protokollierung anzupassen oder eine ausführlichere Protokollierung zu erhalten.