Déployer un plug-in d'indexation pour Apache Nutch

En déployant le plug-in indexeur pour Apache Nutch (robot d'exploration Open Source), vous pouvez proposer du contenu Web à vos utilisateurs via Google Cloud Search.

Lorsque vous lancez l'exploration, Apache Nutch explore le Web et utilise le plug-in indexeur pour importer les versions binaires (ou texte) originales de ces contenus dans l'API d'indexation de Google Cloud Search. Cette API indexe alors les contenus et les diffuse à vos utilisateurs.

Remarques importantes

Configuration requise

Configuration requise
Système d'exploitation Linux uniquement :
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10 (64 bits)
Logiciel
  • Apache Nutch version 1.15. Cette version de Nutch est d'ailleurs incluse dans le logiciel du plug-in.
  • Java JRE 1.8 installé sur l'ordinateur qui exécute le plug-in indexeur
Types de documents Apache Tika Formats de documents acceptés par Apache Tika 1.18

Déployer le plug-in indexeur

Les étapes suivantes décrivent comment installer le plug-in indexeur et configurer ses composants pour explorer les URL spécifiées et renvoyer les résultats à Cloud Search.

Prérequis

Avant de déployer le plug-in indexeur pour Apache Nutch de Cloud Search, rassemblez les informations suivantes afin de connecter Google Cloud Search et la source de données:

Étape 1: Créer et installer le logiciel du plug-in et Apache Nutch

  1. Clonez le dépôt du plug-in indexeur à partir de GitHub.

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. Vérifiez la version souhaitée du plug-in indexeur:

    $ git checkout tags/v1-0.0.5
  3. Créez le plug-in indexeur.

    $ mvn package

    Pour ignorer les tests lors de la création du plug-in indexeur, utilisez mvn package -DskipTests.

  4. Téléchargez Apache Nutch 1.15 et suivez les instructions d'installation d'Apache Nutch.

  5. Extrayez le fichier target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip (créé à l'étape 2) dans un dossier. Copiez le dossier plugins/indexer-google-cloudsearch dans le dossier des plug-ins d'installation d'Apache Nutch (apache-nutch-1.15/plugins).

Étape 2: Configurer le plug-in d'indexation

Pour configurer le plug-in indexeur pour Apache Nutch, créez un fichier nommé plugin-configuration.properties.

Il doit inclure les paramètres suivants, indispensables pour accéder à la source de données Google Cloud Search.

Paramètre Paramètre
ID de la source de données api.sourceId = 1234567890abcdef
Obligatoire. ID de la source Google Cloud Search configuré par l'administrateur Google Workspace pour le plug-in indexeur.
Compte de service api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Obligatoire. Fichier contenant la clé du compte de service Google Cloud Search créé par l'administrateur Google Workspace pour assurer l'accessibilité du plug-in indexeur.

L'exemple suivant présente un exemple de fichier de configuration avec les paramètres requis.

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

Le fichier de configuration peut également contenir d'autres paramètres contrôlant le comportement du plug-in indexeur. Vous pouvez configurer la manière dont le plug-in envoie les données à l'API Cloud Search, defaultAcl.* et batch.*. Vous pouvez également configurer la manière dont il insère les métadonnées et les données structurées.

Pour obtenir une description de ces paramètres, consultez la page Paramètres de connecteur fournis par Google.

Étape 3: Configurer Apache Nutch

  1. Ouvrez conf/nutch-site.xml et ajoutez les paramètres suivants:

    Paramètre Paramètre
    Propriété "plugin.includes" plugin.includes = text

    Obligatoire. Liste des plug-ins à utiliser. Cette liste doit inclure au moins les éléments suivants:

    • index-basic
    • index-more
    • indexer-google-cloudsearch
    conf/nutch-default.xml fournit une valeur par défaut pour cette propriété, mais vous devez également y ajouter manuellement indexer-google-cloudsearch.
    Noms des balises Meta metatags.names = text

    Facultatif. Liste de tags séparés par une virgule associés à des propriétés du schéma de la source de données correspondante. Pour savoir comment configurer des balises Meta pour Apache Nutch, consultez la page Nutch-parse metatags (en anglais).

    L'exemple suivant montre la modification à apporter dans le fichier 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. Ouvrez conf/index-writers.xml et ajoutez la section suivante:

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

    La section <writer> contient les paramètres suivants:

    Paramètre Paramètre
    Chemin d'accès au fichier de configuration de Google Cloud Search gcs.config.file = path

    Obligatoire. Chemin (absolu) complet du fichier de configuration de Google Cloud Search.

    Format d'importation gcs.uploadFormat = text

    Facultatif. Format dans lequel le plug-in d'indexation transmet le contenu du document à l'API d'indexation de Google Cloud Search. Les valeurs valides sont les suivantes :

    • raw: le plug-in d'indexation transmet le contenu original du document, sans conversion.
    • text: le plug-in d'indexation transmet le contenu extrait, au format texte. La valeur par défaut est raw.

Étape 4: Configurer l'exploration du Web

L'exploration du Web doit d'abord être configurée pour n'inclure que les informations que votre organisation souhaite proposer aux utilisateurs dans les résultats de recherche. Cette section offre un aperçu uniquement. Si vous souhaitez en savoir plus sur la configuration d'une exploration du Web, reportez-vous au tutoriel de Nutch.

  1. Configurez les URL de début.

    Les URL de début indiquent à Apache Nutch où commencer l'exploration de votre contenu. Les URL de début doivent permettre au robot d'accéder à l'ensemble du contenu que vous souhaitez explorer en suivant les liens. Ces URL sont obligatoires.

    Pour configurer les URL de début:

    1. Remplacez le répertoire de travail par le répertoire d'installation de Nutch:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. Créez un répertoire pour les URL:

      $ mkdir urls
    3. Créez un fichier intitulé seed.txt et inscrivez-y les URL, à raison d'une par ligne.

  2. Configurez des règles relatives aux URL à suivre et à ne pas suivre.

    Les règles des URL à suivre définissent les URL qui seront explorées et incluses dans l'index de Google Cloud Search. Le robot vérifie quelles URL sont soumises à des règles à suivre. Seules les URL qui respectent ces règles sont explorées et indexées.

    Les règles des URL à ne pas suivre définissent les URL qui ne seront ni explorées, ni incluses dans l'index de Google Cloud Search. Si une URL contient un format d'exploration interdit, le robot d'exploration ne l'explore pas.

    Pour configurer des règles relatives aux URL à suivre et à ne pas suivre, procédez comme suit:

    1. Remplacez le répertoire de travail par le répertoire d'installation de Nutch:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. Modifiez les règles des URL à suivre/à ne pas suivre dans le fichier conf/regex-urlfilter.txt: \

      $ nano conf/regex-urlfilter.txt
    3. Utilisez des expressions régulières avec le préfixe "+" ou "-" pour suivre ou ne pas suivre des formats d'URL et des extensions, comme dans les exemples ci-dessous. Les expressions ouvertes sont acceptées.

      # 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)
      #+.
      
  3. Modifier le script d'exploration

    En l'absence du paramètre gcs.uploadFormat ou si la valeur définie est "raw", vous devez ajouter les arguments "-addBinaryContent -base64" à transmettre à la commande nutch index. Ces arguments indiquent au module d'indexation de Nutch d'inclure du contenu binaire en Base64 au moment d'appeler le plug-in d'indexation. Ces arguments ne sont pas présents par défaut dans le script ./bin/crawl.

    1. Ouvrez le script crawl dans apache-nutch-1.15/bin.
    2. Ajoutez les options -addBinaryContent -base64 au script, comme dans l'exemple suivant:

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

Étape 5: Démarrer l'exploration du Web et importer du contenu

Une fois que vous avez installé et configuré le plug-in indexeur, vous pouvez l'exécuter de façon autonome en mode local. Utilisez les scripts de ./bin pour exécuter une tâche d'exploration ou des commandes Nutch individuelles.

L'exemple suivant suppose que les composants requis se trouvent dans le répertoire local. À partir du répertoire apache-nutch-1.15, exécutez Nutch avec la commande suivante:

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

Les journaux d'exploration sont disponibles sur la sortie standard (terminal) ou dans le répertoire logs/. Pour rediriger les journaux de sortie ou pour configurer une journalisation plus détaillée, modifiez le fichier conf/log4j.properties.