使用 Google 的 Web API 服务向 Domino 应用程序添加 Google Web 搜索功能。本文将展示如何使用一个简单的代理在应用程序中实现该搜索功能。请下载代码示例,开始 googling 吧!
面对 Google 当前和不断扩充的 30 多亿个 Web 页面的索引,它之所以会成为在 Internet 上执行工业强度的搜索的最佳工具之一就不难理解了。除了其 Web 页面的数量之外,搜索结果的质量之高也归功于其专有的搜索算法,该算法建立在相关性和流行性的基础上。最近的报告表明,Google 每天以 88 种不同的语言响应 2 亿个搜索请求(平均每秒响应 2,300 个请求!)。而根据 SearchEngineWatch.com 的调查,Google 处理了基于 Web 的所有查询中的百分之七十五。
显而易见,许多 Web 用户很熟悉 Google 及其搜索特性。不那么为人所知的事实是,您可以使用 Google 的 Web API 服务,将 Google 的搜索功能整合进自己的 Domino 应用程序中(正如我们将在下一节说明的那样,您可以免费下载这个 API)。本文讲述如何向 Domino 应用程序添加 Google 的搜索功能。我们将简要介绍 Google API 以及它们是如何工作的。然后我们将研究一个示例应用程序,它将 Google 搜索功能与 Domino 应用程序集成在一起。我们最后将提供一些如何扩充和定制这个简单例子的思路,从而结束本文的讨论。(本文中出现的所有例子都包含在一个 Domino 数据库中,您可以从 Sandbox下载该数据库。)
本文假设您是对编写 Domino 代理很熟悉的有经验的 Notes 应用程序开发人员。虽然高级 Java 经验不是理解我们的例子所必需的,但是强烈建议您了解一些 Java 的基础知识。
Google API
要使用 Google 的 API,请从 Google 的 Web API 下载页面下载 Google Web API 开发者工具箱(Googleapi.zip),并创建一个免费的 Google 帐户以获得一个许可密钥。该密钥允许您每天最多执行 1,000 次搜索(您必须在发出搜索请求时在查询中包括此密钥。这是通过编程方式完成的,因此用户不必在每次执行查询时都键入该密钥)。该开发者工具箱附带了文档和例子,使您对 Google 的自动化搜索如何工作有一个基本的了解。
在下载 Googleapi.zip 之后,请将它解压缩到 c:Googleapi 目录中。然后您就可以通过在 MS-DOS 命令提示符下键入以下命令来快速调用该 Web API: java -cp Googleapi.jar com.Google.soap.search.GoogleAPIDemo <key> search Lotus Domino > result.html ,其中 < key > 是您的注册密钥,“Lotus Domino”是您想要搜索的项,result.html 是您想要将搜索结果写到其中的文件的名称。例如,下面的例子:
清单 1. 搜索结果
...
Start Index = 1
End Index = 10
Estimated Total Results Number = 663000
...
显示了估计的 663,000 项查询结果中的前 10 项结果。
不过,如果您在 Google Web 站点上试验相同的查询,可能会获得不同的结果。例如,在 Google上针对“Lotus Domino”的相同查询将产生估计的 596,000 项结果。(Google API 支持团队已证实,该 Web API 和 Google 站点本身使用相同的搜索引擎和索引页面,搜索结果方面的细微差别可能是由 Google 所维护的许多数据中心造成的。)
快速浏览一下 Googleapi 目录中的 GoogleAPIDemo.java:
清单 2. 摘自 GoogleAPIDemo.java 的代码片断
...
GoogleSearch s = new GoogleSearch();
...
GoogleSearchResult r = s.doSearch();
...
您可以发现 doSearch() 方法在设置许可密钥和搜索字符串属性之后调用了 Google 搜索。
在继续下一个例子之前,让我们快速查看一下您将使用的 Google Web API 中的几个方法:
setKey()设置用户许可密钥。
setQueryString()设置查询字符串。
doSearch()调用 Google 搜索。
toString()返回 Google 搜索结果的格式化表示形式。
getResultElements()返回结果元素的数组。
getSnippet()返回一个代码片断,这个代码片断显示它出现的地方的 URL 环境中的查询。
getSummary()在当前文档包含于 ODP 目录中时返回 ODP 摘要。
getTitle()返回 HTML 格式的搜索结果标题。
getURL()返回搜索结果的绝对 URL。
此外,下面这组方法可以进一步完善您的搜索应用程序:
setStartResult()设置要返回的第一个结果的索引。例如,如果有 500 个结果,您可能希望从第 100 个结果处开始返回。
setMaxResults()设置每个查询要返回的最大结果数目。每个查询的最大值是 10。如果执行没有多少匹配项的查询,所获得的实际结果数目可能要比您所请求的少。
setFilter()启用或禁用“相关查询”过滤器。这个过滤器排除非常相似的结果。
面对 Google 当前和不断扩充的 30 多亿个 Web 页面的索引,它之所以会成为在 Internet 上执行工业强度的搜索的最佳工具之一就不难理解了。除了其 Web 页面的数量之外,搜索结果的质量之高也归功于其专有的搜索算法,该算法建立在相关性和流行性的基础上。最近的报告表明,Google 每天以 88 种不同的语言响应 2 亿个搜索请求(平均每秒响应 2,300 个请求!)。而根据 SearchEngineWatch.com 的调查,Google 处理了基于 Web 的所有查询中的百分之七十五。
显而易见,许多 Web 用户很熟悉 Google 及其搜索特性。不那么为人所知的事实是,您可以使用 Google 的 Web API 服务,将 Google 的搜索功能整合进自己的 Domino 应用程序中(正如我们将在下一节说明的那样,您可以免费下载这个 API)。本文讲述如何向 Domino 应用程序添加 Google 的搜索功能。我们将简要介绍 Google API 以及它们是如何工作的。然后我们将研究一个示例应用程序,它将 Google 搜索功能与 Domino 应用程序集成在一起。我们最后将提供一些如何扩充和定制这个简单例子的思路,从而结束本文的讨论。(本文中出现的所有例子都包含在一个 Domino 数据库中,您可以从 Sandbox下载该数据库。)
本文假设您是对编写 Domino 代理很熟悉的有经验的 Notes 应用程序开发人员。虽然高级 Java 经验不是理解我们的例子所必需的,但是强烈建议您了解一些 Java 的基础知识。
Google API
要使用 Google 的 API,请从 Google 的 Web API 下载页面下载 Google Web API 开发者工具箱(Googleapi.zip),并创建一个免费的 Google 帐户以获得一个许可密钥。该密钥允许您每天最多执行 1,000 次搜索(您必须在发出搜索请求时在查询中包括此密钥。这是通过编程方式完成的,因此用户不必在每次执行查询时都键入该密钥)。该开发者工具箱附带了文档和例子,使您对 Google 的自动化搜索如何工作有一个基本的了解。
在下载 Googleapi.zip 之后,请将它解压缩到 c:Googleapi 目录中。然后您就可以通过在 MS-DOS 命令提示符下键入以下命令来快速调用该 Web API: java -cp Googleapi.jar com.Google.soap.search.GoogleAPIDemo <key> search Lotus Domino > result.html ,其中 < key > 是您的注册密钥,“Lotus Domino”是您想要搜索的项,result.html 是您想要将搜索结果写到其中的文件的名称。例如,下面的例子:
清单 1. 搜索结果
...
Start Index = 1
End Index = 10
Estimated Total Results Number = 663000
...
显示了估计的 663,000 项查询结果中的前 10 项结果。
不过,如果您在 Google Web 站点上试验相同的查询,可能会获得不同的结果。例如,在 Google上针对“Lotus Domino”的相同查询将产生估计的 596,000 项结果。(Google API 支持团队已证实,该 Web API 和 Google 站点本身使用相同的搜索引擎和索引页面,搜索结果方面的细微差别可能是由 Google 所维护的许多数据中心造成的。)
快速浏览一下 Googleapi 目录中的 GoogleAPIDemo.java:
清单 2. 摘自 GoogleAPIDemo.java 的代码片断
...
GoogleSearch s = new GoogleSearch();
...
GoogleSearchResult r = s.doSearch();
...
您可以发现 doSearch() 方法在设置许可密钥和搜索字符串属性之后调用了 Google 搜索。
在继续下一个例子之前,让我们快速查看一下您将使用的 Google Web API 中的几个方法:
setKey()设置用户许可密钥。
setQueryString()设置查询字符串。
doSearch()调用 Google 搜索。
toString()返回 Google 搜索结果的格式化表示形式。
getResultElements()返回结果元素的数组。
getSnippet()返回一个代码片断,这个代码片断显示它出现的地方的 URL 环境中的查询。
getSummary()在当前文档包含于 ODP 目录中时返回 ODP 摘要。
getTitle()返回 HTML 格式的搜索结果标题。
getURL()返回搜索结果的绝对 URL。
此外,下面这组方法可以进一步完善您的搜索应用程序:
setStartResult()设置要返回的第一个结果的索引。例如,如果有 500 个结果,您可能希望从第 100 个结果处开始返回。
setMaxResults()设置每个查询要返回的最大结果数目。每个查询的最大值是 10。如果执行没有多少匹配项的查询,所获得的实际结果数目可能要比您所请求的少。
setFilter()启用或禁用“相关查询”过滤器。这个过滤器排除非常相似的结果。