部署 Apache Nutch 索引器插件

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

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

重要注意事项

系统要求

系统要求
操作系统 仅限 Linux: <ph type="x-smartling-placeholder">
    </ph>
  • 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 Apache Nutch 索引器插件之前,请收集将 Google 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. 将第 2 步中构建的 target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip 解压缩到一个文件夹。将 plugins/indexer-google-cloudsearch 文件夹复制到 Apache Nutch 安装插件文件夹 (apache-nutch-1.15/plugins)。

第 2 步:配置索引器插件

要配置 Apache Nutch 索引器插件,请创建一个名为 plugin-configuration.properties 的文件。

配置文件必须指定以下参数,这些参数是访问 Google Cloud Search 数据源所必需的。

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

以下示例展示了包含必需参数的示例配置文件。

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

配置文件还可以包含用于控制索引器插件行为的其他参数。您可以配置 插件将数据推送到 Cloud Search API defaultAcl.*batch.*。您还可以配置索引器插件填充元数据和结构化数据的方式。

有关这些参数的说明,请参阅 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

    可选。映射到 相应的数据源的架构要详细了解如何为元标记设置 Apache Nutch,请转至 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> 部分包含以下参数:

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

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

    上传格式 gcs.uploadFormat = text

    可选。索引器插件将文档内容推送到 Google Cloud Search 索引器 API 时采用的格式。有效值包括:

    • raw:该索引器插件推送未转换的原始文档内容。
    • text:该索引器插件推送提取的文本内容。默认值为 raw

第 4 步:配置网页抓取

在开始网页抓取之前,请配置抓取,使其仅包含您的组织希望在搜索结果中显示的信息 结果。本部分简要介绍了:有关如何设置网页抓取的详情,请访问 Nutch 教程

  1. 设置起始网址。

    起始网址控制 Apache Nutch 网页抓取工具开始抓取内容的位置。起始网址应该能够让网页抓取工具访问您想要访问的所有内容, 包含特定抓取内容的链接。必须提供起始网址。

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

    1. 将工作目录更改为 Nutch 安装目录:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. 为网址创建目录:

      $ mkdir urls
    3. 创建一个名为 seed.txt 的文件,并在其中列出网址,每行 1 个网址。

  2. 设置追随规则和不追随规则。

    追随网址规则用于控制要抓取并编入 Google Cloud Search 索引的网址。网页抓取工具会根据 遵循网址规则只有与这些规则匹配的网址才会被抓取并编入索引。

    不追随网址规则会排除网址,使其不会被抓取并编入 Google Cloud Search 索引。如果某个网址包含不抓取的格式,则网页抓取工具不会对其进行抓取。

    要设置追随规则和不追随规则,请执行以下操作:

    1. 将工作目录更改为 Nutch 安装目录:

      $ cd ~/nutch/apache-nutch-X.Y/
    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
      # (commented out due to the single url-prefix allowed above)
      #+.
      
  3. 修改抓取脚本。

    如果 gcs.uploadFormat 参数缺失或设为“raw”,您必须添加 “-addBinaryContent -base64”要传递给 nutch index 的参数 命令。这些参数会指示 Nutch 索引器模块包含二进制内容 索引器插件时默认使用 Base64。./bin/crawl 脚本中没有 这些参数的默认选项

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

            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 中的脚本执行抓取作业,或 单个 Nutch 命令

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

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

抓取日志位于 std 输出(终端)或 logs/ 目录中。接收者 定向日志记录输出;如需更详细的日志记录,请修改 conf/log4j.properties