Deployment di un plug-in Apache Nutch Indexer

Puoi configurare Google Cloud Search in modo da fornire contenuti web ai tuoi utenti eseguendo il deployment del plug-in per l'indicizzatore di Google Cloud Search per Apache Nutch, un web crawler open source.

Quando avvii la scansione web, Apache Nutch esegue la scansione del web e utilizza il plug-in per l'indicizzazione per caricare le versioni binarie (o di testo) originali dei contenuti dei documenti nell'API di indicizzazione di Google Cloud Search. L'API di indicizzazione indicizza i contenuti e mostra i risultati agli utenti.

Considerazioni importanti

Requisiti di sistema

Requisiti di sistema
Sistema operativo Solo Linux:
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10 (64 bit)
streaming
  • Apache Nutch versione 1.15. Il software del plug-in per l'indicizzazione include questa versione di Nutch.
  • Java JRE 1.8 installato sul computer su cui verrà eseguito il plug-in per l'indicizzazione
Tipi di documenti di Apache Tika Formati di documento supportati da Apache Tika 1.18

Esegui il deployment del plug-in per l'indicizzazione

I passaggi seguenti descrivono come installare il plug-in per l'indicizzazione e configurare i suoi componenti per eseguire la scansione degli URL specificati e restituire i risultati a Cloud Search.

Prerequisiti

Prima di eseguire il deployment del plug-in per l'indicizzatore Apache Nutch di Cloud Search, raccogli le informazioni necessarie per connettere Google Cloud Search all'origine dati:

Passaggio 1: crea e installa il software plug-in e Apache Nutch

  1. Clona il repository del plug-in dell'indicizzatore da GitHub.

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. Controlla la versione desiderata del plug-in per l'indicizzazione:

    $ git checkout tags/v1-0.0.5
  3. Crea il plug-in per l'indicizzatore.

    $ mvn package

    Per saltare i test durante la creazione del plug-in per l'indicizzazione, utilizza mvn package -DskipTests.

  4. Scarica Apache Nutch 1.15 e segui le istruzioni di installazione di Apache Nutch.

  5. Estrai target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip (passaggio 2 incorporato) in una cartella. Copia la cartella plugins/indexer-google-cloudsearch nella cartella di installazione dei plug-in di Apache Nutch (apache-nutch-1.15/plugins).

Passaggio 2: configura il plug-in per l'indicizzazione

Per configurare il plug-in Apache Nutch Indexer, crea un file denominato plugin-configuration.properties.

Il file di configurazione deve specificare i seguenti parametri, necessari per accedere all'origine dati Google Cloud Search.

Impostazione Parametro
ID origine dati api.sourceId = 1234567890abcdef
Obbligatorio. L'ID origine di Google Cloud Search che l'amministratore di Google Workspace ha configurato per il plug-in dell'indicizzatore.
Account di servizio api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Obbligatorio. Il file della chiave dell'account di servizio di Google Cloud Search creato dall'amministratore di Google Workspace per l'accessibilità del plug-in dell'indicizzatore.

L'esempio seguente mostra un file di configurazione di esempio con i parametri richiesti.

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

Il file di configurazione può contenere anche altri parametri che controllano il comportamento del plug-in dell'indicizzatore. Puoi configurare la modalità in cui il plug-in esegue il push dei dati nell'API Cloud Search, defaultAcl.* e batch.*. Puoi anche configurare il modo in cui il plug-in per l'indicizzazione completa i metadati e i dati strutturati.

Per una descrizione di questi parametri, vai a Parametri del connettore forniti da Google.

Passaggio 3: configura Apache Nutch

  1. Apri conf/nutch-site.xml e aggiungi i seguenti parametri:

    Impostazione Parametro
    Il plug-in include plugin.includes = text

    Obbligatorio. Elenco dei plug-in da utilizzare. Devono essere inclusi almeno:

    • indice-base
    • indice-altro
    • indicizzatore-google-cloudsearch
    conf/nutch-default.xml fornisce un valore predefinito per questa proprietà, ma devi anche aggiungere manualmente indexer-google-cloudsearch alla proprietà.
    Nomi dei metatag metatags.names = text

    Campo facoltativo. Elenco separato da virgole di tag mappati alle proprietà nello schema dell'origine dati corrispondente. Per ulteriori informazioni su come configurare Apache Nutch per i meta tag, vai alla pagina relativa ai metadati Nutch-parse.

    L'esempio seguente mostra la modifica richiesta a 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. Apri conf/index-writers.xml e aggiungi la seguente sezione:

    <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 sezione <writer> contiene i seguenti parametri:

    Impostazione Parametro
    Percorso del file di configurazione di Google Cloud Search gcs.config.file = path

    Obbligatorio. Il percorso completo (assoluto) del file di configurazione di Google Cloud Search.

    Formato di caricamento gcs.uploadFormat = text

    Campo facoltativo. Il formato in cui il plug-in per l'indicizzazione esegue il push dei contenuti del documento all'API per l'indicizzazione di Google Cloud Search. I valori validi sono:

    • raw: il plug-in per l'indicizzazione esegue il push dei contenuti originali dei documenti non convertiti.
    • text: il plug-in per l'indicizzazione esegue il push di contenuti testuali estratti. Il valore predefinito è raw.

Passaggio 4: configura la scansione web

Prima di avviare una scansione web, configurala in modo che includa solo le informazioni che la tua organizzazione vuole rendere disponibili nei risultati di ricerca. Questa sezione fornisce una panoramica. Per ulteriori informazioni su come configurare una scansione web, vai al tutorial di Nutch.

  1. Imposta gli URL di inizio.

    Gli URL di avvio controllano il punto in cui il web crawler Apache Nutch inizia a eseguire la scansione dei tuoi contenuti. Gli URL iniziali devono consentire al web crawler di raggiungere tutti i contenuti da includere in una determinata scansione seguendo i link. Gli URL di inizio sono obbligatori.

    Per impostare gli URL di inizio:

    1. Cambia la directory di lavoro nella directory di installazione di Nutch:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. Crea una directory per gli URL:

      $ mkdir urls
    3. Crea un file denominato seed.txt e elenca gli URL al suo interno con 1 URL per riga.

  2. Impostare le regole da seguire e da non seguire.

    Segui le regole URL per controllare quali URL vengono sottoposti a scansione e inclusi nell'indice di Google Cloud Search. Il web crawler controlla gli URL in base alle seguenti regole per gli URL. Solo gli URL che corrispondono a queste regole vengono sottoposti a scansione e indicizzati.

    Le regole da non seguire escludono la scansione degli URL e l'inclusione nell'indice di Google Cloud Search. Se un URL contiene un pattern di non scansione, il web crawler non ne eseguirà la scansione.

    Per impostare le regole per gli URL da seguire e non seguire:

    1. Cambia la directory di lavoro nella directory di installazione di Nutch:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. Modifica conf/regex-urlfilter.txt per cambiare le regole da seguire/non seguire: \

      $ nano conf/regex-urlfilter.txt
    3. Inserisci espressioni regolari con un prefisso "+" o "-" per seguire / non seguire i pattern URL e le estensioni, come illustrato nei seguenti esempi. Sono consentite espressioni aperte.

      # 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. Modifica lo script di scansione.

    Se il parametro gcs.uploadFormat non è presente o è impostato su "non elaborato", devi aggiungere argomenti "-addBinaryContent -base64" per passare al comando nutch index. Questi argomenti indicano al modulo Nutch Indexer di includere contenuti binari in Base64 quando richiama il plug-in dell'indicizzatore. Lo script ./bin/crawl non ha questi argomenti per impostazione predefinita.

    1. Apri lo script crawl in apache-nutch-1.15/bin.
    2. Aggiungi le opzioni -addBinaryContent -base64 allo script, come nell'esempio seguente:

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

Passaggio 5: avvia una scansione del web e carica i contenuti

Dopo aver installato e configurato il plug-in per l'indicizzazione, puoi eseguirlo autonomamente in modalità locale. Utilizza gli script di ./bin per eseguire un job di scansione o singoli comandi Nutch.

L'esempio seguente presuppone che i componenti richiesti si trovino nella directory locale. Esegui Nutch con il seguente comando dalla directory apache-nutch-1.15:

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

I log di scansione sono disponibili nell'output standard (terminale) o nella directory logs/. Per indicare l'output di logging o per un logging più dettagliato, modifica conf/log4j.properties.