什么是 Google?
Google 是一个搜索引擎,它为 Web 站点、Usenet 新闻组和新闻来源建立索引。Web 上有几十亿个页面,能否得出有用的搜索结果的困难就在于弄清楚哪些页面是真正与用户有关的。
Google 关心的不是有多少个结果,而是这些结果的相关度(relevance)。虽然该算法属专利,但它的基本原理是,如果讲述相同主题的其它页面都会链接到某个页面,那这个页面就是有用的。换句话说,如果搜索 German shepherd 找到 1000 个结果,有 500 个页面都链接到其中一个页面上,那么这个页面对于狗的信息来说就有可能是个很好的来源;因此,它出现的位置会高于没有被任何一个页面所链向的页面位置,虽然在这个页面中有可能提到过某人的宠物。
Google 考虑到了相当复杂的搜索,有的词必须有,有的词一定不能有,还有根据语言或编码在其它内容中筛选结果的能力。
Google 长期以来都允许通过其它途径来访问其服务,如 Google 工具条和无线搜索。但现在该公司允许其它开发人员通过 Web 服务接口访问其索引。这就是说,开发人员可以以编程的方法将请求发送到 Google 服务器,然后取回结果。
虽然这些请求的参数与用户通过 Web 界面进行正常的 Google 搜索使用的所有参数完全一样,但是作为程序员的您可以在程序内部控制这些参数。而且,返回的结果是 SOAP 消息的形式,因此您可以随您喜好操作这些结果,而不是非得按结果显示在 Google 站点上的样子来使用。
您还可以利用一些其它信息,它们并不象用以前的办法搜索得到的信息那么明显。例如,您可以按日期确定某个具体的搜索项有多少个结果,然后跟踪其随时间的变化趋势。Google 已经在 Web 界面上实现的服务之一就是拼写建议服务器。这就是说,您可以写一个能利用 Google 引擎来检查用户的拼写并提出建议的应用程序。
请求和响应的形式都是 SOAP 消息。
最终,通过 SOAP 消息 Google 服务得以公开。例如,要请求拼写建议,您可以发送如下消息:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:doSpellingSuggestion xmlns:ns1="urn:GoogleSearch"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<key xsi:type="xsd:string">00000000000000000000000000000000</key>
<phrase xsi:type="xsd:string">pnewmonia</phrase>
</ns1:doSpellingSuggestion>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
并且得到如下结果
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/
"xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"xmlns:xsd=
"http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:doSpellingSuggestionResponse
xmlns:ns1="urn:GoogleSearch"SOAP-ENV:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/">
<return xsi:type="xsd:string">pneumonia</return>
</ns1:doSpellingSuggestionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
然后,您必须手工操作这些数据。
另外一种办法是,您可以使用 Google API 创建应用程序,比如:
GoogleSearch search = new GoogleSearch(); search.setKey("00000000000000000000000000000000"); String suggestion = search.doSpellingSuggestion(spellingRequest); System.out.println(suggestion);
在写这篇教程的时候,Google API 仍在 beta 测试,并且对其使用制定了非常严格的限制条件。API 服务条款第一条就声明 Google API 供个人、非商业用途使用,因此您不能为了提高流量而在您的 Web 站点上镜像其结果。请务必在阅读完整篇文档之后再注册申请授权码。
从技术角度出发,请谨记下面几点:
第一点是最重要的,所有搜索都需要有授权码,这是免费的。它每天最多支持 1000 次搜索。请访问 https://www.google.com/accounts/NewAccount?
continue=http://api.google.com/createkey&followup
=http://api.google.com/createkey 以获得授权码。
每次最多返回 10 条搜索结果。
通过这个服务只能找到前 1000 个结果。(因此,请求可以找到编号在 990 到 1000 之间的结果,但找不到第 1001 个。)