[Google API](5)筛选结果

来源:互联网 发布:斑马线礼让行人 知乎 编辑:程序博客网 时间:2024/04/29 01:49

设置筛选条件

可以根据很多因素来限制 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 whathappens<br> w
hen barney meets star trek. Warner <b>...</b>        General and <b>Science</b> <b>Fiction</b> bookshttp://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 &quot;<b>Science
</b> <b>Fiction</b>&quot; 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_esSwedish:  lang_svTurkish:  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 时则排除结果集。