Implementa un complemento indexador para Apache Nutch

Puedes configurar Google Cloud Search para que entregue contenido web a tus usuarios implementando el complemento indexador de Cloud Search para Apache Nutch, un rastreador web de código abierto.

Cuando inicias el rastreo web, Apache Nutch rastrea la Web y usa el complemento indexador para subir versiones binarias (o de texto) originales del contenido del documento a la API de Google Cloud Search. La API de Cloud Search indexa el contenido y muestra los resultados a tus usuarios.

Consideraciones importantes

Antes de implementar el complemento indexador, ten en cuenta las siguientes consideraciones.

Requisitos del sistema

Requisitos del sistema
Sistema operativo Solo en Linux:
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10 (64 bits)
Software
  • Apache Nutch, versión 1.15 El software del complemento indexador incluye esta versión de Nutch.
  • Java JRE 1.8 instalado en la computadora que ejecutará el complemento del indexador
Tipos de documentos de Apache Tika Formatos de documentos compatibles con Apache Tika 1.18

Implementa el complemento del indexador

En estos pasos, se describe cómo instalar el complemento del indexador y configurar sus componentes para rastrear URLs y devolver resultados a Cloud Search.

Requisitos previos

Antes de implementar el complemento indexador, recopila la información necesaria para conectar Cloud Search y la fuente de datos:

Paso 1: Compila e instala el software del complemento y Apache Nutch

  1. Clona el repositorio del complemento del indexador desde GitHub.

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. Consulta la versión del complemento indexador que deseas:

    $ git checkout tags/v1-0.0.5
  3. Compila el complemento del indexador.

    $ mvn package

    Para omitir las pruebas durante la compilación del complemento, usa mvn package -DskipTests.

  4. Descarga Apache Nutch 1.15 y sigue las instrucciones de instalación de Apache Nutch.

  5. Extrae target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip a una carpeta. Copia la carpeta plugins/indexer-google-cloudsearch en la carpeta plugins de Apache Nutch (apache-nutch-1.15/plugins).

Paso 2: Configura el complemento del indexador

Para configurar el complemento, crea un archivo llamado plugin-configuration.properties. El archivo de configuración debe especificar los siguientes parámetros para acceder a la fuente de datos de Cloud Search.

Configuración Parámetro
ID de la fuente de datos api.sourceId = 1234567890abcdef
Obligatorio. ID de la fuente de Cloud Search que el administrador de Google Workspace configuró para el complemento indexador
Cuenta de servicio api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Obligatorio. El archivo de claves de la cuenta de servicio de Cloud Search que creó el administrador de Google Workspace para la accesibilidad del complemento indexador.

En el siguiente ejemplo, se muestra un archivo de configuración de muestra:

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

El archivo de configuración también puede contener parámetros que controlan el comportamiento del complemento, como la forma en que el complemento envía datos a la API de Cloud Search y cómo propaga los metadatos y los datos estructurados. Para obtener descripciones de estos parámetros, consulta Parámetros de conectores proporcionados por Google.

Paso 3: Configura Apache Nutch

  1. Abre conf/nutch-site.xml y agrega los siguientes parámetros:

    Configuración Parámetro
    El complemento incluye plugin.includes = text

    Obligatorio. Lista de complementos que se usan. Por lo menos, debe incluir lo siguiente:

    • index-basic
    • index-more
    • indexer-google-cloudsearch
    conf/nutch-default.xml proporciona un valor predeterminado, pero debes agregar indexer-google-cloudsearch de forma manual.
    Nombres de metaetiquetas metatags.names = text

    Opcional. Lista de etiquetas separadas por comas que se asignan a propiedades en el esquema de fuente de datos correspondiente. Para obtener más información, consulta Metadatos de Nutch-parse.

    En el siguiente ejemplo, se muestra la modificación necesaria para 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. Abre conf/index-writers.xml y agrega la siguiente sección:

    <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 sección <writer> contiene los siguientes parámetros:

    Configuración Parámetro
    Ruta de acceso al archivo de configuración de Cloud Search gcs.config.file = path

    Obligatorio. Ruta completa (absoluta) al archivo de configuración de Cloud Search.

    Formato de carga gcs.uploadFormat = text

    Opcional. Es el formato que usa el complemento para enviar contenido de documentos a la API de Cloud Search. Estos son los valores válidos:

    • raw: Envía contenido original sin convertir.
    • text: Envía contenido textual extraído. El valor predeterminado es raw.

Paso 4: Configura el rastreo web

Antes de iniciar un rastreo web, configúralo para que solo incluya la información que tu organización quiere que esté disponible. Para obtener más información, consulta el instructivo de Nutch.

  1. Configura las URLs de inicio.

    Las URLs de inicio controlan dónde comienza a rastrear tu contenido el rastreador web. El rastreador debe poder acceder a todo el contenido que desees incluir siguiendo los vínculos.

    Para configurar las URL de inicio, sigue estos pasos:

    1. Cambia al directorio de instalación de Nutch:
      $ cd ~/nutch/apache-nutch-X.Y/
    2. Crea un directorio para las URLs:
      $ mkdir urls
    3. Crea un archivo llamado seed.txt y enumera una URL por línea.
  2. Configura reglas de seguimiento y de no seguimiento.

    Las reglas de URL de seguimiento controlan qué URLs indexa el rastreador. Las reglas de no seguimiento evitan que se rastreen las URLs.

    Para configurar estas reglas:

    1. Cambia al directorio de instalación de Nutch.
    2. Editar conf/regex-urlfilter.txt:
      $ nano conf/regex-urlfilter.txt
    3. Ingresa expresiones regulares con un prefijo "+" o "-":

      # 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. Edita la secuencia de comandos de rastreo.

    Si falta el parámetro gcs.uploadFormat o se configura como "raw", debes agregar argumentos -addBinaryContent -base64 al comando nutch index. Estos argumentos le indican al módulo del indexador de Nutch que incluya contenido binario en Base64.

    1. Abre la secuencia de comandos crawl en apache-nutch-1.15/bin.
    2. Agrega las opciones como se muestra en este ejemplo:

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

Paso 5: Inicia un rastreo web y la carga de contenido

Después de configurar el complemento indexador, puedes ejecutarlo en modo local. Usa secuencias de comandos de ./bin para ejecutar un trabajo de rastreo.

En el siguiente ejemplo, se supone que los componentes están en el directorio local. Ejecuta Nutch desde el directorio apache-nutch-1.15:

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

Los registros de rastreo están disponibles en la terminal o en el directorio logs/. Para dirigir el resultado del registro, edita conf/log4j.properties.