部署 Apache Nutch 索引器插件

您可以为 Apache Nutch(一种开源网页抓取工具)部署 Cloud Search 索引器插件,以便 设置 Google Cloud Search 来为您的用户提供网页内容。

当您启动网页抓取时,Apache Nutch 会抓取网页,并使用索引器插件将原始二进制(或文本)版本的文档内容上传到 Google Cloud Search API。Cloud Search API 会为内容编制索引,并将结果提供给您的用户。

重要注意事项

在部署索引器插件之前,请注意以下事项。

系统要求

系统要求
操作系统 仅限 Linux:
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10(64 位)
软件
  • Apache Nutch 版本 1.15。索引器插件软件包含 此版本的 Nutch。
  • 在将运行索引器 插件的计算机上安装的 Java JRE 1.8
Apache Tika 文档类型 Apache Tika 1.18 支持的文档格式

部署索引器插件

以下步骤介绍了如何安装索引器插件并配置其组件,以抓取网址并将结果返回给 Cloud Search。

前提条件

在部署索引器插件之前,请收集连接 Cloud Search 和数据源所需的信息:

第 1 步:构建和安装插件软件和 Apache Nutch

  1. 从 GitHub 克隆索引器插件代码库。

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. 检出所需的索引器插件版本:

    $ git checkout tags/v1-0.0.5
  3. 构建索引器插件。

    $ mvn package

    如需在构建插件时跳过测试,请使用 mvn package -DskipTests

  4. 下载 Apache Nutch 1.15 并 按照 Apache Nutch 安装说明进行操作。

  5. target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip 解压缩到文件夹。将 plugins/indexer-google-cloudsearch 文件夹复制到 Apache Nutch plugins 文件夹 (apache-nutch-1.15/plugins)。

第 2 步:配置索引器插件

如需配置插件,请创建一个名为 plugin-configuration.properties 的文件。 配置文件必须指定以下参数,才能访问 Cloud Search 数据源。

设置 参数
数据源 ID api.sourceId = 1234567890abcdef
必需。Google Workspace 管理员为索引器插件设置的 Cloud Search 源 ID。
服务账号 api.serviceAccountPrivateKeyFile = ./PrivateKey.json
必需。Google Workspace 管理员为访问索引器插件而创建的 Cloud Search 服务账号密钥文件。

以下示例展示了一个示例配置文件:

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

配置文件还可以包含控制插件行为的参数,例如插件如何将数据推送到 Cloud Search API,以及如何填充元数据和结构化数据。如需了解这些参数的说明, 请参阅 Google 提供的连接器参数

第 3 步:配置 Apache Nutch

  1. 打开 conf/nutch-site.xml 并添加以下参数:

    设置 参数
    包含的插件 plugin.includes = text

    必需。要使用的插件列表。此列表必须至少包含以下插件:

    • index-basic
    • index-more
    • indexer-google-cloudsearch
    conf/nutch-default.xml 提供了一个默认值,但您 必须手动将 indexer-google-cloudsearch 添加到其中。
    元标记的名称 metatags.names = text

    可选。映射到相应数据源架构中属性的标记的英文逗号分隔列表。如需了解详情,请参阅 Nutch-parse 元标记

    以下示例展示了必需对 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. 打开 conf/index-writers.xml 并添加以下部分:

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

    <writer> 部分包含以下参数:

    设置 参数
    Cloud Search 配置文件的路径 gcs.config.file = path

    必需。Cloud Search 配置文件的完整(绝对)路径。

    上传格式 gcs.uploadFormat = text

    可选。插件用于将文档内容推送到 Cloud Search API 的格式。有效值包括:

    • raw:推送未经转换的原始内容。
    • text:推送提取出来的文本内容。默认值为 raw

第 4 步:配置网页抓取

在启动网页抓取之前,请进行配置,使其仅包含您的组织希望提供的信息。如需了解详情,请参阅 Nutch 教程

  1. 设置起始网址。

    起始网址控制网页抓取工具开始抓取内容的位置。 抓取工具必须能够通过追随链接覆盖您希望包含的所有内容。

    如需设置起始网址,请执行以下操作:

    1. 切换到 Nutch 安装目录:
      $ cd ~/nutch/apache-nutch-X.Y/
    2. 为网址创建一个目录:
      $ mkdir urls
    3. 创建一个名为 seed.txt 的文件,并列出网址(每行一个)。
  2. 设置追随规则和不追随规则。

    追随网址规则控制抓取工具为哪些网址编制索引。不追随规则将特定网址排除在抓取之外。

    如需设置这些规则,请执行以下操作:

    1. 切换到 Nutch 安装目录。
    2. 修改 conf/regex-urlfilter.txt
      $ nano conf/regex-urlfilter.txt
    3. 输入带有“+”或“-”前缀的正则表达式:

      # 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. 修改抓取脚本。

    如果缺少 gcs.uploadFormat 参数或将其设置为“raw”,则必须向 nutch index 命令添加 -addBinaryContent -base64 参数。这些参数会让 Nutch 索引器模块包含 Base64 格式的二进制内容。

    1. apache-nutch-1.15/bin 中打开 crawl 脚本。
    2. 添加选项,如此示例所示:

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

第 5 步:启动网页抓取并上传内容

设置索引器插件后,您可以在本地模式下运行它。使用 ./bin 中的脚本执行抓取作业。

以下示例假定组件位于本地目录中。从 apache-nutch-1.15 目录运行 Nutch:

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

抓取日志将显示在终端或 logs/ 目录中。如需定向日志记录输出,请修改 conf/log4j.properties