Implementar un complemento indexador para Apache Nutch

Esta guía va dirigida a los administradores del complemento indexador de Google Cloud Search para Apache Nutch, es decir, a cualquier persona responsable de descargar, implementar, configurar y mantener el complemento indexador. En esta guía se asume que estás familiarizado con los sistemas operativos Linux y conoces los aspectos básicos del rastreo de la Web y Apache Nutch.

En ella se proporcionan instrucciones para realizar tareas clave relacionadas con la implementación del complemento indexador:

  • Descargar el software del complemento indexador.
  • Configurar Google Cloud Search.
  • Configurar Apache Nutch y el rastreo de la Web.
  • Iniciar el rastreo de la Web y la subida de contenido.

En esta guía no se facilita información sobre las tareas que debe realizar el administrador de G Suite para asociar Google Cloud Search al complemento indexador para Nutch. Si necesitas más información acerca de esas tareas, consulta las instrucciones sobre cómo gestionar fuentes de datos de terceros.

Descripción general del complemento indexador de Google Cloud Search para Apache Nutch

De manera predeterminada, Google Cloud Search puede localizar, indexar y servir contenido procedente de datos de G Suite, por ejemplo, de Documentos de Google o Gmail. Con el complemento indexador para Apache Nutch, un rastreador web de código abierto, puedes ampliar el alcance de Google Cloud Search para servir contenido web a tus usuarios.

Archivos de propiedades de configuración

Para que el complemento indexador pueda rastrear la Web y subir contenido a la API Indexing, el administrador del complemento indexador debe proporcionar información específica al conector durante el proceso de configuración, tal como se detalla en los pasos de la implementación de este documento.

Para usar el complemento indexador, debes definir las propiedades en dos archivos de configuración:

  • nutch-site.xml: configuración del rastreador web Apache Nutch
  • sdk-configuration.properties : configuración de Google Cloud Search

Las propiedades de estos archivos permiten que el complemento indexador de Google Cloud Search y Apache Nutch se comuniquen entre sí.

Rastrear la Web y subir contenido

Una vez que hayas rellenado los archivos de configuración, tendrás los ajustes necesarios para iniciar el rastreo de la Web. Cuando Apache Nutch rastrea la Web, detecta contenido de documentos que se ajusta a su configuración. Con el complemento indexador sube versiones originales binarias (de texto) del contenido del documento a la API Indexing de Google Cloud Search, donde se indexan y, finalmente, se sirven a los usuarios.

Sistema operativo compatible

El complemento indexador de Google Cloud Search para Apache Nutch debe instalarse en Linux.

Versión compatible de Apache Nutch

El complemento indexador de Google Cloud Search para Apache Nutch es compatible con la versión 1.14 de Nutch, que se proporciona con este software.

Tipos de documentos que reconoce Apache Tika

La versión 1.14 de Apache Nutch utiliza la versión 1.17 de Apache Tika para analizar contenidos. Si quieres ver una lista de los tipos de documentos que se pueden indexar con el complemento indexador para Apache Nutch, consulta los formatos de documentos que reconoce Apache Tika.

Compatibilidad con listas de control de acceso

El complemento indexador admite el control de acceso a los documentos de un dominio de G Suite mediante el uso de listas de control de acceso (LCA).

Si las LCA predeterminadas están activadas en la configuración del complemento de Google Cloud Search (el valor asignado a defaultAcl.mode no es none y se ha definido defaultAcl.*), el complemento indexador primero intentará crear y aplicar una LCA predeterminada.

Si las LCA predeterminadas no están activadas, el complemento concederá permiso de lectura a todas las cuentas del dominio de G Suite.

Para obtener información detallada, consulta los parámetros de los conectores proporcionados por Google.

Requisitos

Antes de implementar el complemento indexador, asegúrate de que dispones de lo siguiente:

  • Java JRE 1.8 instalado en el ordenador donde se utilice el complemento indexador.
  • La información de G Suite necesaria para establecer las relaciones entre Google Cloud Search y Apache Nutch:

    Por lo general, el administrador de G Suite del dominio podrá proporcionarte estas credenciales.

Pasos de la implementación

Para implementar el complemento indexador, sigue estos pasos básicos:

  1. Instalar Apache Nutch y el complemento indexador
  2. Configurar Google Cloud Search
  3. Configurar Apache Nutch
  4. Configurar el rastreo de la Web
  5. Iniciar el rastreo de la Web y la subida de contenido

Paso 1: Instalar Apache Nutch y el complemento indexador

El complemento indexador de Google Cloud Search debe instalarse en un equipo host. Google proporciona este software en la siguiente distribución binaria predefinida:

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

La distribución binaria también incluye el SDK Content Connector de Google Cloud Search.

Para instalar Apache Nutch y el complemento indexador de Google Cloud Search:

  1. Descarga el complemento indexador de Apache Nutch.

  2. Descomprime apache-nutch-1.14-v1-0.0.2-bin.tar.gz.
    Al hacerlo, se creará una carpeta denominada "apache-nutch-1.14-SNAPSHOT", que contiene tanto Apache Nutch como el complemento indexador de Google Cloud Search.

Para implementar un complemento indexador de Apache Nutch, debes crear un archivo de configuración de Google Cloud Search denominado sdk-configuration.properties. Este archivo debe contener pares clave-valor que definan la información de configuración requerida por el conector.

El archivo de configuración debe especificar los siguientes parámetros, que son necesarios para acceder a la fuente de datos de Google Cloud Search.

Ajuste Parámetro
ID de fuente de datos api.sourceId = 1234567890abcdef
Obligatorio. El ID de la fuente de Google Cloud Search configurado por el administrador de G Suite.
Cuenta de servicio api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Obligatorio. El archivo de clave de la cuenta de servicio de Google Cloud Search creado por el administrador de G Suite para acceder al complemento indexador.

En el ejemplo siguiente se muestra un archivo de configuración de Google Cloud Search.

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

El archivo de configuración también puede contener otros parámetros de configuración específicos de Google Cloud Search, que pueden definir la forma en que el complemento indexador envía datos a la API de Google Cloud Search. Algunos de estos parámetros son defaultAcl.* y batch.*. Para ver descripciones detalladas, consulta los parámetros de los conectores proporcionados por Google.

Puedes configurar el complemento indexador de forma que se rellenen los metadatos y los datos estructurados del contenido que se va a indexar. Los valores que se deben rellenar en los campos de los metadatos y los datos estructurados se pueden extraer de las metaetiquetas del contenido HTML que se va a indexar, o bien se pueden especificar los valores predeterminados en el archivo de configuración.

Ajuste Parámetro
Título itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
De forma predeterminada, el complemento utiliza HTML title como título del documento que se va a indexar. Si el título no está presente, puedes utilizar el atributo de metadatos que contiene el valor correspondiente al título del documento o definir un valor predeterminado.
Marca de tiempo de creación itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
El atributo de metadatos que contiene el valor de la marca de tiempo de creación del documento.
Hora de última modificación itemMetadata.updatetime.field=releaseDate
itemMetadata.updatetime.defaultValue=1940-01-17
El atributo de metadatos que contiene el valor de la marca de tiempo de la última modificación del documento.
Idioma del documento itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
El idioma del contenido de los documentos que se van a indexar.
Tipo de objeto de esquema itemMetadata.objectType=movie
El tipo de objeto utilizado por el sitio web, tal como se indica en las definiciones de objeto del esquema de la fuente de datos. Si no se especifica esta propiedad, el conector no indexará ningún dato estructurado.

Nota: Esta propiedad de la configuración dirige a un valor en lugar de a un atributo de metadatos, y los sufijos .field y .defaultValue no se admiten.

Formatos de fecha y hora

Los formatos de fecha y hora indican los formatos esperados en los atributos de metadatos. Si el archivo de configuración no contiene este parámetro, se utilizarán los valores predeterminados. En la tabla siguiente se muestra este parámetro.

Ajuste

Parámetro

Formatos de fecha y hora adicionales

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

Una lista separada por punto y coma (semicolon) de formatos java.time.formatDateTimeFormatter adicionales. Los formatos se utilizan para analizar valores de cadena de cualquier campo de fecha o fecha y hora en los metadatos o los esquemas. Aunque el valor predeterminado es una lista vacía, los formatos RFC 3339 y RFC 1123 se admiten en todos los casos.

Paso 3: Configurar Apache Nutch

El archivo tar apache-nutch-1.14-SNAPSHOT-bin.tar.gz incluye el archivo de configuración de Apache Nutch, nutch-site.xml.

Este archivo contiene los valores necesarios para la propiedad plugin.includes:

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

Debes modificar nutch-site.xml añadiendo los siguientes parámetros, que son necesarios para interactuar con Google Cloud Search.

Ajuste Parámetro
Ruta al archivo de configuración de Google Cloud Search gcs.config.file = TBS Obligatorio. La ruta completa (absoluta) al archivo de configuración de Google Cloud Search.
Formato de subida gcs.uploadFormat = text Opcional. El formato en el que el complemento indexador transmite el contenido del documento a la API del indexador de Google Cloud Search. Los valores admitidos son:
  • raw: el complemento indexador transmite el contenido original del documento sin convertirlo.
  • text: el complemento indexador transmite contenido de texto extraído. El valor predeterminado es raw.

En el ejemplo siguiente se muestra la modificación necesaria en 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>

Paso 4: Configurar el rastreo de la Web

Antes de empezar a rastrear la Web, debes configurar el rastreo de modo que solo incluya la información que tu organización quiera que se muestre en los resultados de las búsquedas. En esta sección se incluye información básica sobre cómo:

Para obtener información más detallada sobre cómo configurar un rastreo de la Web, consulta el tutorial de Nutch.

Configurar las URL de inicio

Con las URL de inicio puedes controlar dónde empezará el rastreador web de Apache Nutch a rastrear tu contenido. El rastreador web debe poder acceder a todo el contenido que quieras incluir en un rastreo concreto siguiendo los enlaces de una o varias URL de inicio, que son obligatorias.

Para configurar las URL de inicio:

  1. Sustituye el directorio de trabajo por el directorio de instalación de Nutch:
    $ cd ~/nutch/apache-nutch-X.Y/
  2. Crea un directorio para las URL:
    $ mkdir urls
  3. Crea un archivo llamado seed.txt e incluye las URL en él (una por línea):
    $ nano urls/seed.txt

Configurar reglas de seguimiento y no seguimiento

Las reglas de seguimiento de URLs permiten controlar qué URLs se rastrearán e incluirán en el índice de Google Cloud Search. Antes de rastrear cualquier URL, el rastreador web identifica cuáles de ellas coinciden con las reglas de seguimiento de URLs. Únicamente se rastrearán e indexarán las que coincidan con dichas reglas.

Las reglas de no seguimiento excluyen las URL para que no se rastreen ni se incluyan en el índice de Google Cloud Search. Si una URL contiene un patrón de no rastreo, el rastreador web la omitirá.

Para configurar las reglas de seguimiento y no seguimiento de URLs:

  1. Sustituye el directorio de trabajo por el directorio de instalación de Nutch:
    $ cd ~/nutch/apache-nutch-X.Y/
  2. Edita conf/regex-urlfilter.txt para cambiar las reglas de seguimiento y no seguimiento:
    $ nano conf/regex-urlfilter.txt
  3. Coloca las expresiones regulares (pueden ser de final abierto) con los prefijos "+" o "-" según quieras definir patrones de seguimiento o no seguimiento de URLs, extensiones, etc., tal como se muestra en los siguientes ejemplos.

Ejemplos:

# 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)
#+.

Editar la secuencia de comandos de rastreo

Si el parámetro gcs.uploadFormat no está presente o se le ha asignado el valor "raw", deberás añadir argumentos -addBinaryContent -base64, que se pasarán al comando nutch index. Estos argumentos indican al módulo indexador de Nutch que incluya contenido binario en Base64 cuando se haga una llamada al complemento indexador. La secuencia de comandos ./bin/crawl no contiene estos argumentos de forma predeterminada.

Edita la secuencia de comandos crawl.sh en apache-nutch-1.14-SNAPSHOT/bin y añade lo siguiente:

      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: Iniciar el rastreo de la Web y la subida de contenido

Una vez que hayas instalado y configurado el complemento indexador, podrás ejecutarlo en su propio modo local. Usa las secuencias de comandos de ./bin para realizar un rastreo o ejecutar comandos concretos de Nutch.

En el siguiente ejemplo se asume que los componentes necesarios se ubican en el directorio local de un sistema Linux. Ejecuta Nutch con el siguiente comando de la carpeta apache-nutch-1.14-SNAPSHOT:

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

Los registros de rastreo están disponibles en el dispositivo de salida estándar (terminal) o en el directorio logs/. Para dirigir la salida del registro o para obtener un registro más detallado, edita conf/log4j.properties.