google搜索

1.3  建立Google查询

Google查询的建立是一个过程。并没有所谓的不正确的查询。你有可能会创建一个效率低下的查询,但是,随着互联网的飞速发展以及Google缓 存大小的不断增大,今天一个效率低下的查询可能会在明天--或者下个月或者下一年提供好的搜索结果。有效的Google搜索需要扎实地掌握基本搜索语法, 需要很好地掌握有效的精确检索技术。Google的查询语法是很简单的,而有效的精确检索技术的学习则需要多花一些时间和一些实践。最终,你将了解它,并 且它将成为"鸡蛋里挑骨头"之举。

1.3.1   Google搜索的黄金法则

在我们讨论Google搜索之前,首先要理解一些基本法则:

Google查询是不区分大小写的。Google不管你的查询是小写的(hackers),大写的(HACKERS),大小写混合的 (hAcKeR)还是乱写的(haCKeR)--Google都同样对待它们。当你在进行类似搜索源代码列表的时候,字母的大小写对程序员来讲具有不同的 意义,那么此时这种处理就非常重要。其中,值得注意的一个例外是单词or。当它作为布尔操作符时,or必须为大写,即OR。

Google通配符。Google的通配符概念和程序员的通配符概念不同。大多数程序认为通配符可以是任一单一字母的字符表示(UNIX爱好者可能 会联想到问号符)或者是用星号表示的一系列字母。这种技术称为词干提取。在Google的通配符中,星号(*)仅代表搜索词组中的一个词。在一个词的开始 或者结尾使用星号和直接使用这个单词的效果相同。

Google保留忽略查询关键字的权利。Google会忽略一个搜索中的某些常用单词,字母和一些单独的数字。这些词汇常称为"停用词"(stop words)。Google的基本搜索文档(www.google.com/ help/basics.html)指出这些停用词包括where和how,如图1.12所示。不过,Google似乎会在搜索中包括这些词。例如,搜索 WHERE 1=1的结果要少于搜索1=1的结果。很明显搜索中包括了WHERE这个词。搜索"where pig"返回的结果明显少于简单地搜索"pig",这再次表明:事实上,Google不会忽略类似how和where此类的词。有时,Google会一声 不响地忽略这些停用词。例如,搜索"HOW 1 = WHERE 4"时返回的结果数便与搜索1 = WHERE 4的结果数相同。看似单词HOW与搜索的结果无关,Google会默认将该单词忽略掉。忽略单词看似没有什么明显的规则,但是有时候当Google忽略一 个查询项时,它会在搜索结果页面的查询输入框的下方提醒用户。

 
(点击查看大图)图1.12   忽略查询中的单词

强制Google使用常见词汇的一种方法是把它们用引号引起来。这样即可将该查询作为一个短语提交,并且查询结果中会包括短语中的所有单词--不管 这些词是如何的常见。另外,你还可以在查询项之前添加一个+号,例如查询+and。不使用引号,同时注意不要在+号和单词and之间添加空格,那么这个查 询会返回将近50亿条结果。

Google搜索背景知识

扩大搜索的规模

一个非常有趣的搜索便是查询*。这个查询能产生大约180亿条结果,号称当今产生结果最多的查询。你能打破这个记录吗?

32个单词的限制。Google限制搜索关键字最多为32个单词,这在先前的10个单词的基础上已经得到了提升。这也包含高级操作符,我们将在稍后 讨论。对于大多数用户来说这个限制已经足够用了,不过当用户需要时,还是有办法突破这一限制的。一种非常有效地突破一次查询中不能超过32个关键字限制的 方法便是使用用通配符(*)来代替某些单词。Google不认为通配符是一个查询项,这使得你能够稍稍扩展查询。下面来看一下如何搜索美国宪法的前几个单 词:

we the people of the united states in order to form a more perfect union establish justice

这组查询有17个单词之长。如果我们用星号(通配符)来替换其中的一些单词,然后提交为:

"we * people * * united states * order * from * more perfect * establish *"

包括引号在内,Google将会把该查询看作是一个9个单词的查询(如果不算通配符的话,只有8个)。也可以进一步扩展我们的查询,即只使用两个以上实词和任意数量的通配符。

1.3.2  基本搜索

Google搜索是一个过程,其目标是查找关于某个主题的信息。这个过程以基本搜索开始。Google只会在返回相关信息的时候,才会用各种方式对 基本搜索进行修改。在这一过程中,Google使用网站排名(ranking)技术把排名最高的页面放到搜索结果的第一页上。排名系统的细节很复杂,并且 略有水份,但就对我们的目的而言,Google很少能够精准地给出我们所需要的信息。

最简单的Google查询由一个单词或者一组单词组成。一些基本的单词搜索包括:

hacker

FBI hacker Mitnick

mad hacker dpak

比单个单词搜索稍复杂一点的是词组(或称"短语")搜索。词组是由封装在双引号内的一组单词所组成。当Google碰到一个词组时,它会按照你提供的单词顺序对词组中的所有单词进行搜索。Google不会忽略词组中的常见词。词组搜索包括:

"Google hacker"

"adult humor"

"Carolina gets pwnt"

我们将在下一章中看到,词组和单词搜索可以和高级操作符一起组合使用。

1.3.3  使用布尔操作符和特殊字符

虽然相比于基本单词搜索,词组搜索更为高级,但它仍然是Google的一种查询形式。为了执行高级查询,有必要先了解布尔操作符AND,OR和 NOT。为了适当地对高级Google查询中各个部分进行分段,我们也必须研究使用括号的可视化分组技术。最后,我们将利用某些特殊字符将这些技术组合起 来。这些特殊字符可以是某些操作符的缩写,也可以是通配符或者占位符。

如果你曾使用过其他的Web搜索引擎,那么你很可能接触过布尔操作符。布尔操作符可以用来限定查询返回的结果。由于许多搜索引擎以不同的方式来处理 布尔操作符,那么即使你已经熟悉布尔操作符,也请你花点时间略读这一节,以帮助你理解Google是如何处理这些操作符的。对这些操作符的不正确使用会完 全改变返回的结果。

最常用的布尔操作符是AND。这个操作符用于在查询中包含多个关键字。例如,一个简单的查询hacker可以通过一个布尔操作符扩展为hacker AND cracker。第二个查询不仅包含关于黑客的网页,也包含黑客以及他们的"食物"的网站。一些搜索引擎要求必须使用这个操作符,而Google则不要 求。AND关键字对Google来讲是多余的。默认情况下,Google会自动搜索查询中的所有关键字。事实上,当你使用了明显多余的关键字 时,Google会给出警告,如图1.13所示。

 
(点击查看大图)图1.13 Google的警告

注意

在你刚开始学习Google-fu(译者注:Google-fu是指使用Google进行快速的,简便的,精确的搜索,"fu"取自于"Kong- fu")的方法时,要时刻注意Web搜索界面上的查询输入框下面所显示的信息。你可以从中学习到许多技巧提示,以改进你的查询语法。

加号(+)强制Google搜索它后面的单词。在加号后面不得有空格。例如,你打算把and,justice,for和all作为单独的、不同的单 词进行搜索,那么Google会给出其中的一些单词太常用并已被忽略的警告。为了强制Google搜索这些常见的单词,需要在它们前面添加加号。如果在查 询中过度使用加号也不会有问题。为了执行包含所有单词的搜索,可考虑使用查询+and justice for +all。除此之外,还可以把这些单词封装到双引号中。一般情况下,这可以强制Google包含词组中所有的常见单词。用一个词组来表示这个查询 为"and justic for all"。

另一个常见的布尔操作符是NOT。在功能上,它和AND操作符恰好相反,NOT操作符从查询中忽略一个单词。一种使用这个操作符的办法是在搜索单词 前面加上一个减号(-)。在减号和搜索关键字之间不能有空格。考虑一个简单的查询,如hacker。这个查询非常通用,它会返回各种职业的查询结果,例如 打高尔夫的人、伐木人、连环杀手以及那些患有慢性支气管炎的人。对于这个查询,你很可能并不是对单词hacker的每种解释都感兴趣,而是想得到这个关键 字更为特殊的解释。为了让查询更为精确,你可以包含更多的关键字,Google会自动地把它们AND在一起,或者也可以使用NOT来删除查询中不需要的关 键字。考虑使用如hacker -golf或者hacker -phlegm这样的查询来从你的查询中删除那些令人厌恶的字符。这会让搜索的结果更加接近你所查找的hacker的解释:伐木人。或者干脆在 Google视频(Video)中查找lumberjack song。这似乎有点跑题了。

OR布尔操作符是一个很少使用,而且有时会让人感到迷惑的操作符。OR操作符可以用管道符号(|)或者大写的单词OR来表示。它命令Google查 找搜索中的一个或者另外一个关键字。尽管这看起来相当直接,例如当考虑一个简单的查询时,如hacker或者"evil cybercriminal",但是当你使用多个AND,OR和NOT时,情况就变得很糟了。为了消除这种疑惑,你只需要把一个查询看作是一个从左到右的 句子即可。忘记那些你在高中代数里所学到的运算顺序。对我们而言,AND操作符,OR操作符以及高级操作符都是具有相同的优先级的。这些因素可能会影响排 名或者搜索结果页面的显示顺序,但对Google是如何处理这些搜索查询却没有任何影响。

我们来看一个非常复杂的例子。这正是我们将要在第2章中讨论的机制。

 
 
  1. intext:password | passcode intext:username | userid | user filetype:csv 

这个例子混合使用了高级操作符和OR布尔操作符来创建一个查询,读起来就像是一个书写礼貌的请求语句一样。Google将会这样来读这个请求,"查 找所有文档的文本中包含password或者passcode的页面。在那些页面中,只要显示出那些包含username,userid或者user的页 面。对于那些页面,只需要显示CSV文件"。从技术上来说,那些OR符号把查询分成各种可能的查询解释,而Google并不会被这个事实所迷惑。从代数学 的观点来看,这个查询在语法上是错误的,但是Google并不会为此所迷惑。针对我们学习怎样创建查询这一目的而言,所有我们要记住的就是Google是 从左向右来读取查询的。

Google的那种呆板的组合布尔操作符的方法对读者而言仍然是容易迷惑的。幸运的是,Google对括号并不感冒(或者不受其影响)。前面的查询也可以提交为

 
 
  1. intext:(password | passcode) intext:(username | userid | user) filetype:csv 

这个查询对我们人类而言更容易阅读,而且它确实能够和那个缺少括号的令人迷惑的查询产生同样的结果。

1.3.4  搜索缩简

为了找到最精确的结果,常常需要修改搜索查询关键字来达到更为精确的搜索。虽然Google对大多数的基本搜索都努力提供非常精确的结果,我们仍然 需要使用非常复杂的查询来查找包含非常精确的网站页面。查找这些页面需要掌握搜索缩简的技巧。即使这本书关注的大部分内容都是搜索缩简技术及其建议,但更 为重要的是,你至少应该理解搜索缩简的基本知识。我们举一个简单的例子来说明这一点,比如管理基于TCP/IP的路由协议的免费软件GNU Zebra。GNU Zebra使用一个叫作zebra.conf的文件来存储包括接口信息和口令在内的配置信息。在从网上下载完最新版本的Zebra之后,我们可以看到其内 含的zebra.conf.sample文件如下:

 
 
  1. ! -*- zebra -*-  
  2. !  
  3. ! zebra sample configuration file  
  4. !  
  5. ! $Id: zebra.conf.sample,v 1.14 1999/02/19 17:26:38 developer Exp $  
  6. !  
  7. hostname Router  
  8. password zebra  
  9. enable password zebra  
  10. !  
  11. ! Interface's description.  
  12. !  
  13. !interface lo  
  14. ! description test of desc.  
  15. !  
  16. !interface sit0  
  17. ! multicast  
  18. !  
  19. ! Static default route sample.  
  20. !  
  21. !ip route 0.0.0.0/0 203.181.89.241  
  22. !  
  23. !log file zebra.log 

如果想用Google来查找这些文件,我们可以试试如下的这个简单的搜索:

 
 
  1. "! Interface's description. " 

这可以看作是基础搜索(base search)。基础搜索应该是唯一,且尽可能和我们所需要的结果最接近,牢记这句俗语"无用信息输入,无用信息输出"。好的基础搜索是成功实现复杂的搜 索缩简技术的基本要求。我们的这个基础搜索之所以是唯一的,并不仅仅是因为我们注意到了单词Interface's和description,而是我们也 把跟在短语后的感叹号、空格以及最后的句号作为搜索的一部分。而这正是配置文件所用的语法,所以看起来我们这样做非常合适。但是,Google没有正确地 解析这个查询,这致使我们没有得出恰当的结果,如图1.14所示。

 
(点击查看大图)图1.14 基础搜索的处理

这个结果并非毫无价值,而且这个查询相对而言比较简单,但是我们先来查看zebra.conf文件。在查询中添加该文件来帮助我们缩小查询结果,进行更精确的查询。这但是我们的下一个查询:

 
 
  1. "! Interface's description. " zebra.conf 

如图1.15所示,查询结果有些许不同,但是并非更好。

第一次搜索中的seattlewireless结果链接没有了。虽然这是一个有效结果链接,但是因为配置文件没有被命名为zebra.conf(它 被命名为ZebraConfig),所以"改良后的"搜索没再查看它。因此,搜索缩简是一个大学问:不要进行会过滤掉有效结果的缩简。

 
(点击查看大图)图1.15 搜索缩简结果

注意,图1.15中的第三个链接引用了zebra.conf.sample。这些示例文件会干扰有效查询结果,因此我们要添加到已有查询,减少包含该短语的结果链接。新的查询如下:

 
 
  1. "! Interface's description. " -"zebra.conf.sample" 

不过,这使得我们暂时步入了软件用户的后尘。类似于此的软件安装通常会捆绑一个示例配置文件,以指导创建一个自定义配置。大多数用户只需要简单地编 辑该文件,仅针对他们的环境更改那些必须要更改的设置,并将该文件保存为.sample文件,而非.conf文件。在这种情况下,带有查询 项"zebra.conf.sample"的有效配置文件仍然存在。基于该关键字的缩简查询可能会忽略以这种方式创建的有效配置文件。

还可以从另一角度来考虑如何缩简。注意到zebra.conf.sample文件包含hostname Router。虽然我们假定用户的机器并未命名为Router,但是用户仍然很有可能修改这一选项。即便如此,这仍比基于 zebra.conf.sample的缩简保险得多。在查询中添加缩简项--"hostname Router"之后,可以在不牺牲潜在有用结果链接的同时,大大减少结果数,并且降低查找到潜在示例文件的结果链接的几率。

我们当然可以进行缩简,但比起花费更多的时间在处理完美的搜索缩简上,仅做一些简单的缩简就足够了。我们最终的查询(仅一个单词就有四个限定词!)变为:

 
 
  1. "! Interface's description. " -"hostname Router" 

虽然这并不是用来查找这些文件的最好的查询,但是已经足够说明查询缩简工作的原理了。在第2章中讨论的高级操作符能够给我们带来更为完美的查询!

Google搜索背景知识

故意制造不好的结果

在某些情况下,使用一些简单的Google查询语法是无可厚非的。即使Google确实具有从人性化的查询关键字忽略某些关键字的技术,但也请Google不要这么做。我们这些人类读者会感谢你!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值