设置筛选条件
可以根据很多因素来限制 Google 搜索。它们包括语言、内容、国家或地区和主题。您还可以控制输入和输出的编码。
例如,Google 列出了国家或地区代码,允许您根据来源国家或地区限制数据。虽然在分发文件 APIs_Reference.html 上有完整的清单,但是要将搜索限制在包含词组 "science fiction" 的来源为 United Kingdom 的页面上,请设置 restrict 参数:
...
search.setMaxResults(maxResult);
search.setRestrict("countryUK");
GoogleSearchResult result = search.doSearch();
...
Google 还指定了信息的四组“特殊分类”:
- U.S. Government (unclesam)
- Linux (linux)
- Macintosh (mac)
- FreeBSD (bsd)
因此,为了搜索归在 linux 分类的 "science fiction" 页面,请将限制条件设置成:
...
search.setQueryString(searchTerm);
search.setRestrict("linux");
GoogleSearchResult result = search.doSearch();
...
请注意,主题域并不总是如您所愿的限制结果。例如,实际上在 linux 类中 "science fiction" 有 8710 个结果。
这里有一个样本,是在 linux 类中搜索到的 8710 个 "science fiction" 结果页面:
...
Bills Pointers to <b>Science</b> <b>Fiction</b>
http://starship.python.net/crew/gandalf/rtlinux/luz.cs.nmt.edu/%257Etobor/jwz/ba
bylon.shtml
Bills Pointers to <b>Science</b> <b>Fiction</b>. Here is what
happens<br> w
hen barney meets star trek. Warner <b>...</b>
General and <b>Science</b> <b>Fiction</b> books
http://www.bowling.uklinux.net/bookshop/sfbooks.php3
<b>...</b> Striking Home <b>Science</b>
<b>Fiction</b> Bookshop In Associa
tion with Amazon.com<br> and Amazon.co.uk [Christian Books] [Bowling Books] <b>.
..</b>
<b>Science</b> <b>Fiction</b>
http://nico-s.homelinux.org/ScienceFiction/livres/categories.php?FInfos=sciencef
iction
<b>Science</b> <b>Fiction</b>.
<b>...</b> Definition de la "<b>Science
</b> <b>Fiction</b>" par les editions Pocket. Barrington<br> J. Bayley. Al'
unite. Le rayon Zen (auxditions le livre de poche). <b>...</b>
...
您还可以将限制条件组合在一起,如:
unclesam.countryUS
linux.(countryUS|countryUK)
max.(-countryUS)
API 还提供了特定的参数限制结果的语言。
...
search.setQueryString(searchTerm);
search.setLanguageRestricts("lang_fr");
GoogleSearchResult result = search.doSearch();
...
Google 能识别以下的语言代码:
Arabic: lang_ar
Chinese (S): lang_zh-CN
Chinese (T): lang_zh-TW
Czech: lang_cs
Danish: lang_da
Dutch: lang_nl
English: lang_en
Estonian: lang_et
Finnish: lang_fi
French: lang_fr
German: lang_de
Greek: lang_el
Hebrew: lang_iw
Hungarian: lang_hu
Icelandic: lang_is
Italian; lang_it
Japanese: lang_ja
Korean; lang_ko
Latvian: lang_lv
Lithuanian: lang_lt
Norwegian: lang_no
Portuguese: lang_pt
Polish: lang_pl
Romanian: lang_ro
Russian: lang_ru
Spanish: lang_es
Swedish: lang_sv
Turkish: lang_tr
对于信息在使用不同编码的环境中来回传输的情况,API 使您可以以指定的方式设定输入和输出语言的编码。例如:
...
search.setQueryString(searchTerm);
search.setInputEncoding("greek");
search.setOutputEncoding("hebrew");
GoogleSearchResult result = search.doSearch();
...
在这种情况下,解释查询字符串 searchTerm 时就好象它是用 greek 编码的一样,以 hebrew 编码的结果将会被送回来。默认的编码方式是 latin1。
上网冲浪相当长的时间而没有注意到 Web 上有大量的成人内容是不大可能的。要去除搜索集中的成人结果,请选择安全搜索:
...
search.setQueryString(searchTerm);
search.setSafeSearch(true);
GoogleSearchResult result = search.doSearch();
...
如果 setSafeSearch 被设成 true,Google 就会使用一个检查关键词和词组、URL 和 Open Directory 目录的过滤器。
在有许多相似结果的情况下,API 允许您只返回典型页面。例如,如果打开过滤功能,则对于标题和片断极为相似的一组结果,Google 将只返回其中的第一个,而同一 Web 主机上则只返回前两个结果。这样用户不但不会被同一个站点的结果困住,而且还能对那个站点上的可用内容有所了解。
API 允许您使用 setFilter() 方法将过滤功能关闭,但请注意代码样本下面的注意事项。
...
search.setQueryString(searchTerm);
search.setFilter(true);
GoogleSearchResult result = search.doSearch();
...
注意,根据文档,当这个值设为 true 时,过滤功能打开,而当为 false 时则过滤功能关闭。不过,看上去,情况似乎刚好相反,当这个值被设为 true 时则返回相关结果,而当它设为 false 时则排除结果集。