Implantar um plug-in indexador para Apache Nutch

É possível configurar o Google Cloud Search para exibir conteúdo da Web aos usuários implantando o plug-in indexador do Cloud Search para Apache Nutch (em inglês), um rastreador da Web de código aberto.

Quando você inicia o rastreamento da Web, o Apache Nutch rastreia a Web e usa o plug-in indexador para fazer upload das versões binárias (ou de texto) originais do conteúdo do documento para a API Google Cloud Search. A API Cloud Search indexa o conteúdo e mostra os resultados aos usuários.

Considerações importantes

Antes de implantar o plug-in do indexador, considere as informações a seguir.

Requisitos do sistema

Requisitos do sistema
Sistema operacional Somente no Linux:
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10 (64 bits)
Software
  • Apache Nutch versão 1.15. O software do plug-in indexador inclui esta versão do Nutch.
  • Java JRE 1.8 instalado no computador que vai executar o plug-in indexador
Tipos de documentos do Apache Tika Formatos de documentos compatíveis com o Apache Tika 1.18

Implantar o plug-in indexador

Estas etapas descrevem como instalar o plug-in indexador e configurar os componentes dele para rastrear URLs e retornar resultados ao Cloud Search.

Pré-requisitos

Antes de implantar o plug-in indexador, reúna as informações necessárias para conectar o Cloud Search e a fonte de dados:

Etapa 1: crie e instale o software de plug-in e o Apache Nutch

  1. Clone o repositório do plug-in indexador do GitHub.

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. Confira a versão do plug-in do indexador que você quer:

    $ git checkout tags/v1-0.0.5
  3. Crie o plug-in do indexador.

    $ mvn package

    Para pular os testes ao criar o plug-in, use mvn package -DskipTests.

  4. Faça o download do Apache Nutch 1.15 e siga as instruções de instalação do Apache Nutch.

  5. Extraia target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip para uma pasta. Copie a pasta plugins/indexer-google-cloudsearch para a pasta plugins do Apache Nutch (apache-nutch-1.15/plugins).

Etapa 2: configurar o plug-in do indexador

Para configurar o plug-in, crie um arquivo chamado plugin-configuration.properties. O arquivo de configuração precisa especificar os seguintes parâmetros para acessar a origem de dados do Cloud Search.

Configuração Parâmetro
Código da origem de dados api.sourceId = 1234567890abcdef
Obrigatório. O ID da origem do Cloud Search que o administrador do Google Workspace configurou para o plug-in do indexador.
Conta de serviço api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Obrigatório. O arquivo da chave da conta de serviço do Cloud Search que o administrador do Google Workspace criou para a acessibilidade do plug-in do indexador.

Confira abaixo um exemplo de arquivo de configuração:

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

O arquivo de configuração também pode conter parâmetros que controlam o comportamento do plug-in, como a forma como ele envia dados para a API Cloud Search e como preenche metadados e dados estruturados. Para descrições desses parâmetros, consulte Parâmetros do conector fornecidos pelo Google.

Etapa 3: configure o Apache Nutch

  1. Abra conf/nutch-site.xml e adicione os seguintes parâmetros:

    Configuração Parâmetro
    Elementos inclusos no plug-in plugin.includes = text

    Obrigatório. Lista de plug-ins a serem usados. Isso precisa incluir pelo menos:

    • index-basic
    • index-more
    • indexer-google-cloudsearch
    O conf/nutch-default.xml fornece um valor padrão, mas é necessário adicionar manualmente o indexer-google-cloudsearch a ele.
    Nomes das metatags metatags.names = text

    Opcional. Lista separada por vírgulas de tags que mapeiam para propriedades no esquema da fonte de dados correspondente. Para saber mais, consulte Metatags do Nutch-parse.

    O exemplo a seguir mostra a modificação necessária 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. Abra conf/index-writers.xml e adicione a seguinte seção:

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

    A seção <writer> contém os seguintes parâmetros:

    Configuração Parâmetro
    Caminho para o arquivo de configuração do Cloud Search gcs.config.file = path

    Obrigatório. O caminho (absoluto) completo para o arquivo de configuração do Cloud Search.

    Formato de upload gcs.uploadFormat = text

    Opcional. O formato que o plug-in usa para enviar o conteúdo do documento para a API Cloud Search. Os valores válidos são:

    • raw: envia conteúdo original e não convertido.
    • text: envia o conteúdo textual extraído. O padrão é raw.

Etapa 4: configurar o rastreamento da Web

Antes de iniciar um rastreamento da Web, configure-o para incluir apenas as informações que sua organização quer disponibilizar. Para mais informações, consulte o tutorial do Nutch.

  1. Configure os URLs iniciais.

    Os URLs iniciais controlam o local em que o rastreador da Web começa a rastrear seu conteúdo. O rastreador precisa acessar todo o conteúdo que você quer incluir seguindo os links.

    Para configurar os URLs iniciais, siga estas etapas:

    1. Mude para o diretório de instalação do Nutch:
      $ cd ~/nutch/apache-nutch-X.Y/
    2. Crie um diretório para URLs:
      $ mkdir urls
    3. Crie um arquivo chamado seed.txt e liste um URL por linha.
  2. Configure regras de seguir e não seguir.

    As regras de seguir controlam quais URLs o rastreador indexa. As regras de não seguir impedem que os URLs sejam rastreados.

    Para configurar essas regras:

    1. Mude para o diretório de instalação do Nutch.
    2. Editar conf/regex-urlfilter.txt:
      $ nano conf/regex-urlfilter.txt
    3. Insira expressões regulares com um prefixo "+" ou "-":

      # 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. Edite o script de rastreamento.

    Se o parâmetro gcs.uploadFormat estiver ausente ou definido como "raw", adicione argumentos -addBinaryContent -base64 ao comando nutch index. Esses argumentos enviam ao módulo de indexador do Nutch instruções para incluir o conteúdo binário em Base64.

    1. Abra o script crawl em apache-nutch-1.15/bin.
    2. Adicione as opções conforme mostrado neste exemplo:

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

Etapa 5: inicie um rastreamento da Web e fazer upload do conteúdo

Depois de configurar o plug-in indexador, é possível executá-lo no modo local. Use scripts de ./bin para executar um job de rastreamento.

No exemplo a seguir, presume-se que os componentes estão no diretório local. Execute o Nutch no diretório apache-nutch-1.15:

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

Os registros de rastreamento estão disponíveis no terminal ou no diretório logs/. Para direcionar a saída de registro, edite conf/log4j.properties.