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