谈谈如何高效使用搜索引擎找到自己想要的内容

Source

tags: Tips

写在前面

最近有朋友问我如何快速找到一些编程问题的解决方案, 当然也包括搜索一些网络资源(如书籍等), 感觉自己用Google也有一段时间了, 可以好好总结一下然后回答这个问题了.

搜索引擎的话我现在肯定是只用Google的, 当然一些情况下我也会用bing(毕竟广告还是要少一些), 百度的话估计只用来找一些文库资源了(下载PPT模板), 除此之外好像没什么能用到百度的地方…

关于一些专业知识, 除了看课本, Wikipedia也是不错的选择, 虽然中文页面相对匮乏, 但是其内容的高质量和准确性以及精美的插图还是让人赞不绝口.

编程方面的问题, 主要还是通过Stack Overflow来查, 虽然有时候遇到的问题都是有10多年历史的老问题, 但是也不乏很多热心的开发者给出自己的见解和方案, 并且你遇到的99.99%的问题在这上面都有人遇到过, 只是环境/平台等会有所出入而已. 除此之外, GitHubissue也是一个不错的选择, 通过issue能看到很多热门开源项目中别人遇到的问题, 以及开发者给出的解决方法, 适合一些活跃的开源项目.

资源方面, 其实还是术业有专攻, 因为Google对版权很重视(谷歌图书!?), 想在上面搜盗版其实并不容易, 还是通过一些其他专用网站来搜索要好点.

下面从选择搜索引擎/关键词搜索/常用资源查找等几个方面具体讲一下. 并且给出一些镜像替代网站, 希望能对大家有所帮助.

选择搜索引擎

这里给出两种, 分为中文和英文搜索, 一般来说编程问题还是通过英文搜索要准确很多, 但是前提是你要知道这些问题的正确英文表达, 建议还是通过Wikipedia先了解一下英文名词的表达, 然后再搜索会得到更贴切的回答.

中文

中文的话其实Bing和google都可, 内容以及准确性上, 只要你关键词到位了, 加上一些搜索技巧(后面说), 就能快速找到你要的内容了. (最好别看百度百科, 有的会有问题, 然后讨论区提了之后都没人管理, 建议看Wikipedia)

但是用Google可能会找到很多爬虫网站, 这里的爬虫网站指的是通过爬取别人文章构成的网站, 我的文章就有很多被爬取了…

不管怎么说, 只要你用中文搜索编程问题, 无外乎这么几种网站:

  • CSDN
  • 博客园
  • 知乎
  • 简书
  • 个人GitHub站点
  • 51CTO
  • 华为云,腾讯云,等一众搬运网站…

而且里面的内容也是天下文章一大抄, 质量很高的内容有但是较少. 当然, 这些网站对于我这样的编程新手还是很友好的, 因为去RTFM(Read the F**k ManPage)实在是让人难受, 而一篇简短的博客却能快速得到你想要的答案, (主要还是因为知识没有成体系地学下去, 不过话又说回来, 谁能记住那么多奇奇怪怪的命令? 不都是找文档吗)

英文

搜索引擎当然首推Google, 或者用duckduckgo也可(据说隐私保护比较好), 前提是有插件或者别的一些方法, 国内其实是有镜像站的, 这里列出几个:(可能会有挂掉的, 可以从网上查找最新网址)

  1. Google Public DNS;
  2. Google diversified search information - g.vovososo.com;
  3. Google (dhobi.win);
  4. Google (googe.fun);

只不过搜索到的部分内容无法点击访问, 例如维基官网, 下面也给出几个维基的镜像站:

  1. 维基百科,自由的百科全书 - Baike 中文百科 - DUHOC.CN;
  2. 维基百科,自由的百科全书 (wmmirror.live);

搜索技巧

以下内容建议大家上手尝试一下, 还是很好玩的!

这里参考了谷歌官方support页面1, 博客2, 文章3.

特殊符号

一些特殊符号在Google搜索中十分重要, 因为其具有的特殊含义可能导致搜索结果并不是你想要的, 特别是编程语言中的一些符号(尤其是weird Shell)

  • ★ \bigstar 搜索完全匹配的结果: "<内容>"双引号(英文标点)括起来的内容是搜索结果必须包含的, 如"最高的建筑".
  • ★ \bigstar 从搜索结果中排除特定字词: 在要排除的字词前加上 -。例如:中国美食 -麻辣.
  • 搜索社交媒体: 在字词前加上 @ 可用于搜索社交媒体。例如:@twitter
  • 搜索特定价格: 在表示价格的数字前加上 $。例如:相机 $400
  • 搜索 # 标签: 在字词前加上 #。例如:#怀旧星期四
  • 同义词搜索: 在关键词前面加上~, 例如: 浙江 ~学院.
  • ★ \bigstar 通配符搜索: 用*表示任意字符, 例如: 鸡飞*跳, 就会得到鸡飞狗跳.

特殊关键词

注意含有冒号的项, 在冒号两边均没有空格, 如果加上空格则指定的搜索模式无效.

  • 在某个数字范围内执行搜索: 在两个数字之间加上 ..。例如:相机$50..100
  • ★ \bigstar 组合搜索: 在各个搜索查询字词之间加上OR。例如:马拉松 OR 比赛
  • 搜索特定网站: 在网站或网站域名前加上site:。例如:site:youtube.comsite:.gov
  • ★ \bigstar 搜索相关网站: 在已知网址前加上related:。例如:related:github.com, 将列出 Stack Overflow - Where Developers Learn, Share, & Build … https://stackoverflow.com (google.com)等网站.
  • 查看网站的 Google 缓存版本: 在网址前加上cache:, 例如cache:math.jlu.edu.cn可以直接跳转到吉大数院官网的缓存界面, 用于找到网站更新前的信息, 当然有的网站Google不会做快照或者快照较新, 此时可以通过Internet Archive: Wayback Machine完成.
  • 搜索网站链接中包含的指定关键字: inurl:, 例如inurl:zorchp可以搜到我的CSDN主页.
  • ★ \bigstar 搜索网站正文中包含的指定关键字: intext:, 例如intext:zorchp可以搜到我的博客, 当然也有爬虫爬到的…
  • 搜索网站标题中包含的指定关键字: intitle:, 例如intitle:zorchp可以搜索到我的博客和其他一些内容.
  • ★ ★ \bigstar\bigstar 搜索指定的文档类型: filetype:, 例如filetype:pdf C++并发编程实战可以搜索电子书/论文等资源, filetype:docx 开题报告模板可以搜索文档等.

搜索关键词

主要有几个情况:

  1. 编程遇到的bug;
  2. 软件安装的问题;
  3. 专业知识;(维基)

对于遇到的程序bug, 可以遵循下面的格式来搜索:(_代表空格, 括号中内容可选)

(平台)_语言_error名称_具体内容_(其他,如系统版本/语言版本/报错语句等)

例如Python报错IndentationError: unexpected indent, 就可以在google中输入:

Python IndentationError: unexpected indent

然后看排前几的Stack Overflow回答(或者其他小众网站给出的解决方案)就能解决你的问题了, 但是, 有时候也会出现一些比较复杂的情况, 比如C++模板编译出现的链式报错, 这样的错误一般来说可以先找到最先报错的内容, 进行搜索, 然后结合这些回答分析一下有哪些导致报错的原因. (遇到了就很头疼, 需要不断积攒经验)

有一些问题可能找不到合适的答案, 比如我前几天遇到的关于 C TeX \rm C\TeX CTEX的一个问题, 就没有解答, 但是可以通过精简报错信息来搜索, 例如:

CTEx Could not open OpenType/TrueType/dfont font file simsun.ttc

这时候其实是因为一些不重要的信息影响了搜索结果, 可以改成这样:

ctex simsum  opentype font

顺着这个思路就能找到你想要的内容了. (大多数情况下)

另外, 也需要删掉语言中自带的一些符号, 比如双引号, 不然结果会很少.

资源搜索

综合资源

还是建议网盘搜索, 这里给出一些:(之前很多都收费了)

电子书

以Google为例, 要搜索文档或电子书(一般是开源的), 可以通过指定文件类型来完成, 上面有提到过, 通过filetype:pdf的方式, 其他方法我之前写过, 可以看看我之前的文章. 下面是两个比较新的可以用的.

其他的之后想到了再补充, 感觉这篇文章内容也不少了, 大家可以多动手实践一下, 善用搜索, 互联网遍地都是宝.

ref


  1. 优化网页搜索结果 - Google 搜索帮助; ↩︎

  2. How to use search like a pro: 10 tips and tricks for Google and beyond | Google | The Guardian; ↩︎

  3. Google Advanced Search - Google Tools - Library Home at Fox Valley Technical College (fvtc.edu); ↩︎