部署 Apache Nutch 索引器插件

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

当您启动网页抓取时,Apache Nutch 会抓取网页,并使用索引器插件将文档内容的原始二进制(或文本)版本上传到 Google Cloud Search Indexing API。Indexing 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 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