部署 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 解析元标记

    以下示例展示了必需对 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