您可以为 Apache Nutch(一种开源网页抓取工具)部署 Cloud Search 索引器插件,让 Google Cloud Search 为您的用户提供网页内容。
当您开始网页抓取时,Apache Nutch 会抓取网页,并使用索引器插件将原始二进制(或文本)版本的文档内容上传到 Google Cloud Search API。Cloud Search API 会为内容编制索引,并向用户提供搜索结果。
重要注意事项
在部署索引器插件之前,请注意以下注意事项。
系统要求
| 系统要求 | |
|---|---|
| 操作系统 | 仅限 Linux:
|
| 软件 |
|
| Apache Tika 文档类型 | Apache Tika 1.18 支持的文档格式 |
部署索引器插件
以下步骤介绍了如何安装索引器插件并配置其组件,以抓取网址并将结果返回给 Cloud Search。
前提条件
在部署索引器插件之前,请收集连接 Cloud Search 和数据源所需的信息:
- Google Workspace 私钥(包含服务账号 ID)。 如需了解如何获取私钥,请参阅配置对 Cloud Search API 的访问权限。
- Google Workspace 数据源 ID。如需了解如何获取数据源 ID,请参阅添加可供搜索的数据源。
第 1 步:构建并安装插件软件和 Apache Nutch
从 GitHub 克隆索引器插件代码库。
$ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git $ cd apache-nutch-indexer-plugin
检出所需的索引器插件版本:
$ git checkout tags/v1-0.0.5
构建索引器插件。
$ mvn package
如需在构建插件时跳过测试,请使用
mvn package -DskipTests。下载 Apache Nutch 1.15 并按照 Apache Nutch 安装说明进行操作。
将
target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip解压到文件夹。将plugins/indexer-google-cloudsearch文件夹复制到 Apache Nutchplugins文件夹 (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
打开
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>打开
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 教程。
设置起始网址。
起始网址控制网页抓取工具开始抓取内容的位置。 抓取工具必须能够通过追随链接来覆盖您希望包含的所有内容。
要设置起始网址,请执行以下操作:
- 切换到 Nutch 安装目录:
$ cd ~/nutch/apache-nutch-X.Y/
- 为网址创建一个目录:
$ mkdir urls
- 创建一个名为
seed.txt的文件,并在其中列出网址,每行一个。
- 切换到 Nutch 安装目录:
设置追随规则和不追随规则。
追随网址规则决定了抓取工具要编制哪些网址的索引。不追随规则会将网址排除在抓取范围之外。
要设置这些规则:
- 切换到 Nutch 安装目录。
- 修改
conf/regex-urlfilter.txt:$ nano conf/regex-urlfilter.txt
输入带有“+”或“-”前缀的正则表达式:
# 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 #+.
修改抓取脚本。
如果缺少
gcs.uploadFormat参数或将其设置为“raw”,则必须向nutch index命令添加-addBinaryContent -base64实参。这些参数会让 Nutch 索引器模块包含 Base64 格式的二进制内容。- 在
apache-nutch-1.15/bin中打开crawl脚本。 添加选项,如本示例所示:
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。