技术人如何高效搜索
技术人/程序员的日常工作,在一些不了解IT的人士看来,可能是些烧脑的、创新的、数理逻辑的、高强度的高智商工作,而程序员自己,在写出一页solarized-dark黑主题色、花花绿绿关键字的代码后,确实可能无来由的散发出睥睨天下气吞山河直呼“还有谁”的王者气息。
但不争的现实是,创造性工作在很多程序员的日常占比值其实少的可怜,重复劳动才是主基调,是不是有点讽刺?更讽刺的是,在面对自己搞不定的简单问题,随便搜索一下基本上可以找到完整详实的解决方案,都不用怎么动脑。而最最讽刺的是,面对复杂的问题或者疑难杂症,有些人连如何搜索如何阅读都搞不定,"砖"就在那里都不知道怎么"搬",实在是太尴尬了。
本文集合一些搜索的小技巧和个人搜索习惯,大家如果有一些更加优雅或者高效的技巧,欢迎文末留言分享。
选择搜索引擎
不要用百度!
不要用百度!
不要用百度!
重要的事情说三遍。首选Google, 其次Google镜像, 真没辙了就用Bing。其他的一些垂直搜索,比如极客搜索(s.geekbang.org) 搜索一些极客帮体系内的文章,都是比较有干货的内容;或者聚合搜索比如虫部落(search.chongbuluo.com)。
总之,科学上网很重要(怎么番羽这里不教),实在没条件临时用Google镜像或者Bing顶顶也行。百度拿来测测能不能上网就够了,不然看这一屏的广告你不来气?
搜索引擎的常用语法
本文的搜索主要以 Google 的搜索语法为主,其他搜索引擎大同小异,可自行查看高级搜索帮助。在个人展开之前,先把“Google搜索帮助”截取一些内容给大家浏览一番:
⇧⇧⇧ 搜索运算符 ⇧⇧⇧
⇧⇧⇧ 高级搜索页 ⇧⇧⇧
下面正式介绍一下个人经常使用的几种高级搜索语法,用好这几个基本上满足大部分的搜索场景了。
1
“ ” 双引号
这个放到第一位,是因为技术人搜索英文的时候经常有些词组被拆碎了,而双引号把搜索词括起来,不仅仅代表完全匹配,还表示返回页面必须必须包含双引号中的所有词,顺序也必须完全一致。
2
- 减号
* 星号
OR 逻辑或
减号很直接的作用,就是从搜索结果中排除特定的词,过滤噪音网页,比较常用。比如jaguar speed -car。
星号通配符没什么好说的,可以匹配任何词。比如"largest * in the world"。
OR组合搜索,就理解成或者。比如marathon OR race。
3
site: 特定网站
inurl: 网址特定字符
link: 网页特定链接
filetype: 文件类型
这几个有点类似,所以摆到一起了。
site:用于搜索特定网站的语法,在笔者的使用频度其实可以排名第二的,比如mysql site:stackoverflow.com,只搜索stack overflow上关于mysql的问答
inurl: 在URL网址里含有某些字符的搜索,如果只是过滤域名其实和site类似了,但是inurl范围更广,比如mysql inurl:php, 那就是搜索url整个字符串里含有php的那些网页,可以是域名,可以是路径,也可以是后缀名
link: 这个笔者不怎么常用,但以防大家跟site或者inurl混淆,特别提一下。它用来表示某个网页里含有跳转到link的链接。比如你要搜索某个软件,可以用百度网盘下载的,就可以这么做mysql link:pan.baidu.com, 体会下其中"深意"。
filetype: 这个文件类型不用解释,下载pdf或者kindle电子书mobi啥的常用。
英文搜索 Tips
虽然IT人阅读英文文档是家常便饭,但是读和写是两码事,读的时候有各种词典直接翻译,而写需要中翻英,这时候选一个不那么贴合的单词,就很有可能把搜索引擎带偏。这里只能说一点个人经验了:
找入口 Find Entry
当你需要在某个特定领域寻找一些成熟解决方案或者开源软件时,以搜索工作流引擎为例,笔者一般会搜索“best open source distributed workflow”,
插播:best 绝对是个符合人性简单易用的完美单词,因为只要是有点规模的软件产品描述基本都会把自己塑造成“最好的”那个, 成熟解决方案有时候可以用 mature, proven, full fledged 来代替。
这时大部分搜出来的或者回答的可能是activiti 或者 jbpm,而这些传统框架并不是你想要的,笔者一般会加上site:github.com 或者 site:stackoverflow.com寻求更具体的答案,此时我们会发现Github上有个awesome-workflow-engines资源(Github上的awesome系列大部分都值得大家star下),里面的airflow, azkaban, Oozie等等都是比较火的workflow引擎,只是使用场景和语言平台各有不同,但是有了这个清单,就可以有的放矢了不是么?
另外,这种大海捞针的事情一定要心细如发,上图中不知道大家有没有一眼发现到“Airflow: a workflow management platform – Airbnb Engineering & Data ...”,搞互联网应用的同学对 airbnb, netflix 这些公司都应该如雷贯耳,通过airflow这个突破口,找到其他的竞品相信同样不是难事了。
对比 Comparison
承接上文既然我们找到了突破口了,但是技术选型需要了解多种产品,然后在各种维度上比对后才能做出正确的决策,选择较低的机会成本,否则产生了高昂的沉没成本就更加得不偿失了。
如何搜索类似的产品,一般这么干:使用“ 产品名 vs ” 根据Google联想的下拉框直接找到该产品的竞品有哪些了,这是笔者最喜欢用的最简单的方式了。如果不使用联想直接搜索的话建议使用 “产品名 alternatives / similar”。
但有时候这个产品名是个缩写,而且与常用的事物重名,比如我们使用的大众点评的开源监控产品“CAT-Central Application Tracking”,如果你直接搜索“CAT vs”,联想出来的是猫狗大战,这就很尴尬了...
没办法,这种危急关头就得使用我们基于语法的高级搜索了。通常我会输入“dianping cat” comparison、better than "dianping cat",“dianping cat” 对比,"dianping cat" 评测等等,注意通常这时的双引号不能少,首要保证搜出来是完整的点评CAT产品,其次多用一些对比性质的单词,来搜索在有些人的心中比CAT更好的产品,最后Google对中文的支持绝对不差,特别这种国内开源的产品在国外收录或采纳并不多的情况下,直接输入中文来搜索,效果应该会更好些。如果效果还是不好的话,就只能从CAT的监控告警这个特性重新寻找Entry看看了。
千篇一律的博文教程
网络发达的好处不用多说,坏处同样突出。对程序员群体最具体的是一些写不来的代码,搞不定的配置,敲不完整的命令,通常百度搜几篇博文就能搞定了。所谓成也博文败也博文,你肯定碰到过百度搜索同一个问题,第一页搜索到的博文基本上是同一篇文章的各种转载,如果一篇的内容没价值那整个搜索结果就都没价值了。
对比Google的排重,百度真是被甩开10条街
当然,笔者对博文本身并没有偏见,但是如果仅仅把博文当成自己的一个"剪贴板",那就真的不是一个好习惯了。还是以具体事例来说明一番,需求很简单:需要你把网上下载的一个基础组件jar包,deploy到nexus私服上。
OK,需求很简单,我们先看看错误示范。打开百度,搜索“maven deploy命令”出来一堆教程,心里窃喜,分分钟可以搞定。
第一篇仔细读了一遍,发现一个详细的deploy-file命令,好像离目标更近了一步。结果一番捣鼓之后后,发现应用依赖这个jar包的时候还是少很多其他依赖项,怎么都编译不成功。然后点开第二篇,特么的,怎么跟刚才的一模一样...然后陆陆续续点开后面的第三篇...第N篇,(中间还有eclipse使用maven deploy的教程,可是老子用的是更高大上的Intellij Idea啊)。整个过程可能半天已经过去了还没搞好,信心受挫,饱受打击,上传个jar包这么费劲呢?
这里就不描述整个排错过程了,就算你请了其他大牛过来帮你看,你的描述可能也是这个问题怎么这么妖异:明明jar包已经在nexus私服上了,为什么本地还是编译报错?明明本地已经依赖到这个jar包了,为什么本地maven资源库只有个pom文件没有jar?不怎么上心的大牛可能会让你重启下电脑,重启下Intellij, 重新安装下maven3...等你一切捣鼓完后发现还是问题依旧的时候,已经要虚脱了...
上面错误示范的根源就是因为找了一个错误的Entry入口,吃别人吃剩下的,不求甚解的苦果。如果我们直接用Google搜索maven官方deploy command,把第一篇理解透彻了,这个问题不用5分钟就DONE了。文中清楚的提到了pom file的问题,用默认生成的generic pom肯定会少了jar内含的pom依赖项,所以要把jar内的pom解压出来在命令行里指定清楚一并上传到nexus上。
所以别怪我太啰嗦,笔者对博文本身真的没有偏见,看不上的是有些人不求甚解的态度,别人咀嚼后的内容质量参差不齐,在你没有能力甄别之前,请回到最原始的地方(比如官网)去拿第一手资料。
手气不错
谷歌的这个手气不错功能,其实很赞,它的作用就是不展示搜索结果页,直接跳转到搜索关键字相关的网页,简化了显示搜索页用户再点击一次的流程。这个相当考验Google的智能水平了,反正百度是没有的...
Tips: 米么的域名曾经从memedai.cn切换到了mi-me.com,经过我的试验,新设备第一次的"手气不错"最大可能是跳到memedai.cn, 但是只要点过了重定向,下一次的"手气不错"就直接进入mi-me.com了,如何让谷歌永久记住新的域名,应该是SEO的范畴了,不过谷歌对于网址跳转的瞬时识别并切换,不得不点赞一下。
结束语
本文无法面面俱到, 类似"论文搜索"一些更加具体的使用场景就不一一列举了,相信到这些级别的读者对于文中搜索技巧应该烂熟于胸或者更胜一筹的了,那就权当抛砖引玉了。
搜索引擎巨头们每时每刻都在想各种的算法或者人工智能手段来提高搜索的效率和精准度(有些除外),而我们作为使用者连基本的搜索都做不好的话,是真真的暴殄天物!
只要搜の好,我好你好他好大家好!