您可以为开源网页抓取工具 Apache Nutch 部署 Google Cloud Search 索引器插件,设置 Google Cloud Search 以向用户提供网页内容。
当您启动网页抓取时,Apache Nutch 会抓取网页,并使用索引器插件将原始二进制(或文本)版本的文档内容上传到 Google Cloud Search Indexing API。Indexing API 会为内容编制索引,并将结果提供给您的用户。
重要注意事项
系统要求
系统要求 | |
---|---|
操作系统 | 仅限 Linux:
|
软件 |
|
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
。