您可以为 Apache Nutch(一种开源网页抓取工具)部署 Google Cloud Search 索引器插件,设置 Google Cloud Search,以便为用户提供网页内容。
当您开始网页抓取时,Apache Nutch 会抓取网页,并使用索引器插件将原始二进制(或文本)版本的文档内容上传到 Google Cloud Search Indexing API。索引 API 会将内容编入索引,然后将结果提供给用户。
重要注意事项
系统要求
系统要求 | |
---|---|
操作系统 | 仅限 Linux:
<ph type="x-smartling-placeholder">
|
软件 |
|
Apache Tika 文档类型 | Apache Tika 1.18 支持的文档格式 |
部署索引器插件
以下步骤介绍了如何安装该索引器插件并配置其组件,以便抓取指定的网址并将结果返回给 Cloud Search。
前提条件
在部署 Cloud Search Apache Nutch 索引器插件之前,请收集将 Google Cloud Search 和数据源连接所需的信息:
- Google Workspace 私钥(包含服务账号 ID)。要了解如何获取私钥,请访问 配置对 Google 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 安装说明操作。
将第 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
打开
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>
打开
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 教程。
设置起始网址。
起始网址控制 Apache Nutch 网页抓取工具开始抓取内容的位置。起始网址应该能够让网页抓取工具访问您想要访问的所有内容, 包含特定抓取内容的链接。必须提供起始网址。
要设置起始网址,请执行以下操作:
将工作目录更改为 Nutch 安装目录:
$ cd ~/nutch/apache-nutch-X.Y/
为网址创建目录:
$ mkdir urls
创建一个名为
seed.txt
的文件,并在其中列出网址,每行 1 个网址。
设置追随规则和不追随规则。
追随网址规则用于控制要抓取并编入 Google Cloud Search 索引的网址。网页抓取工具会根据 遵循网址规则只有与这些规则匹配的网址才会被抓取并编入索引。
不追随网址规则会排除网址,使其不会被抓取并编入 Google Cloud Search 索引。如果某个网址包含不抓取的格式,则网页抓取工具不会对其进行抓取。
要设置追随规则和不追随规则,请执行以下操作:
将工作目录更改为 Nutch 安装目录:
$ cd ~/nutch/apache-nutch-X.Y/
修改
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 # (commented out due to the single url-prefix allowed above) #+.
修改抓取脚本。
如果
gcs.uploadFormat
参数缺失或设为“raw”,您必须添加 “-addBinaryContent -base64
”要传递给nutch index
的参数 命令。这些参数会指示 Nutch 索引器模块包含二进制内容 索引器插件时默认使用 Base64。./bin/crawl 脚本中没有 这些参数的默认选项- 在
apache-nutch-1.15/bin
中打开crawl
脚本。 将
-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
。