Implementa un complemento indexador para Apache Nutch

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

Cuando inicias el rastreo web, Apache Nutch lo hace y utiliza el complemento indexador para subir versiones binarias (o de texto) originales del contenido de los documentos a la API de indexación de Google Cloud Search. La API de indexación indexa el contenido y entrega los resultados a tus usuarios.

Consideraciones importantes

Requisitos del sistema

Requisitos del sistema
Sistema operativo Solo para 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 esa versión de Nutch.
  • Java JRE 1.8 instalado en la computadora que ejecutará el complemento indexador
Tipos de documentos de Apache Tika Formatos de documento compatibles con Apache Tika 1.18

Implementa el complemento indexador

En los siguientes pasos, se describe cómo instalar el complemento indexador y configurar sus componentes para rastrear las URLs especificadas y mostrar los resultados a Cloud Search.

Requisitos previos

Antes de implementar el complemento indexador de Apache Nutch de Cloud Search, recopila la información necesaria para conectar Google 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 indexador desde GitHub.

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

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

    $ mvn package

    Para omitir las pruebas cuando compiles el complemento indexador, 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 (compilado en el paso 2) en una carpeta. Copia la carpeta plugins/indexer-google-cloudsearch en la carpeta de complementos de instalación de Apache Nutch (apache-nutch-1.15/plugins).

Paso 2: Configura el complemento indexador

Para configurar el complemento indexador de Apache Nutch, crea un archivo llamado plugin-configuration.properties.

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.

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

En el siguiente ejemplo, se muestra un archivo de configuración de muestra con los parámetros obligatorios.

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

El archivo de configuración también puede contener otros parámetros que controlan el comportamiento del complemento indexador. Puedes configurar cómo envía los datos a la API de Cloud Search, defaultAcl.* y batch.*. También puedes configurar la manera en que el complemento indexador propaga metadatos y datos estructurados.

Para obtener descripciones de estos parámetros, consulta Parámetros de conectores que proporciona 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. Esto debe incluir, al menos, lo siguiente:

    • index-basic
    • index-more
    • indexer-google-cloudsearch
    conf/nutch-default.xml proporciona un valor predeterminado para esta propiedad, pero también debes agregarle 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 sobre cómo configurar Apache Nutch para metaetiquetas, ve a Metaetiquetas 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 al archivo de configuración de Google Cloud Search gcs.config.file = path

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

    Formato de carga gcs.uploadFormat = text

    Opcional. El formato en el que el complemento indexador envía contenido del documento a la API del indexador de Google Cloud Search. Estos son los valores válidos:

    • raw: El complemento indexador envía contenido original de documentos sin convertir.
    • text: el complemento indexador 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 en la búsqueda resultados. En esta sección, se proporciona una descripción general. para obtener más información sobre cómo configurar un rastreo web, visita la Instructivo de Nutch.

  1. Configura las URLs de inicio.

    Las URL de inicio controlan dónde comienza a rastrear tu contenido el rastreador web de Apache Nutch. Las URL de inicio deberían permitir que el rastreador web llegue a todo el contenido que desee incluir en un rastreo específico siguiendo los vínculos. Las URL de inicio son obligatorias.

    Para configurar las URL de inicio, sigue estos pasos:

    1. Cambia el directorio de trabajo al 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 y enumera las URLs en él con 1 URL por línea.

  2. Configura reglas de seguimiento y de no seguimiento.

    Las reglas de seguimiento de URLs controlan qué URLs se rastrean y se incluyen en el índice de Google Cloud Search. El rastreador web comprueba las URLs seguir las reglas de las URLs. Solo se rastrean y se indexan las URL que coinciden con estas reglas.

    Las reglas de no seguimiento evitan que las URL se rastreen y se incluyan en el índice de Google Cloud Search. Si una URL contiene un patrón de no rastreo, el rastreador web no la rastrea.

    Para configurar reglas de URL de seguimiento y de no seguimiento, sigue estos pasos:

    1. Cambia el directorio de trabajo al directorio de instalación de Nutch:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. Edita conf/regex-urlfilter.txt para cambiar las reglas de seguir o no seguir: \

      $ nano conf/regex-urlfilter.txt
    3. Ingresa expresiones regulares con "+" o "-" para seguir o no seguir patrones de URL y extensiones, como se muestra en el siguientes ejemplos. Se permiten las expresiones abiertas.

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

    Si falta el parámetro gcs.uploadFormat o está configurado como "raw", debes agregar “-addBinaryContent -base64” argumentos para pasar a nutch index. kubectl. Estos argumentos le indican al módulo del indexador de Nutch que incluya contenido binario. en Base64 cuando invoca el complemento indexador. La secuencia de comandos ./bin/Crawl no tiene estos argumentos de forma predeterminada.

    1. Abrir secuencia de comandos crawl en apache-nutch-1.15/bin.
    2. Agrega las opciones -addBinaryContent -base64 a la secuencia de comandos, como en el siguiente 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 carga de contenido

Después de instalar y configurar el complemento indexador, puedes ejecutarlo en por sí solos en modo local. Usa las secuencias de comandos de ./bin para ejecutar un trabajo de rastreo. comandos individuales de Nutch.

En el siguiente ejemplo, se da por sentado que los componentes obligatorios se encuentran en la . Ejecuta Nutch con el siguiente comando desde el directorio apache-nutch-1.15:

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

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