之前感叹过使用中文搜索经常找不到想要的结果,这篇文章总结我对于如何有效搜索的一些想法。

使用英文搜索

之所以使用英文搜索,一方面是中文互联网世界的信息很多都是复制粘贴别处的文章,或者虽然是原创,写的语焉不详,没有自己的总结和分析,有价值的信息太少。 另外,由于谷歌退出了中国,目前谷歌对中文搜索服务似乎已经不太关注了,使用中文在谷歌搜索答案,经常会看到很多 SEO 网站(这种网站也被称为“内容农场”,content farm),像什么 hotbak,兰州养生网,谷歌也没有采取任何行动打击这种辣鸡网站,所以现在在谷歌用中文搜索的体验也不是很好了。

使用长句子搜索还是关键词搜索?

有的人用中文搜索问题,喜欢用自然语言描述自己的问题,全部输入到搜索框,以“禁止 vscode 按下点自动补全”为例,有的人可能会直接输入下面的查询语句

怎么禁止在 vscode 里面按下键盘上的点自动补全?

一般来说,输入一句话相对于输入关键词查找,得到的相关结果会更少,因为一句话一般会包含一些没有信息含量的词语,虽然谷歌如何使用这句话中的词语很难有一个确定的答案,但是搜索引擎在匹配的时候肯定会考虑这些无用的词语,这样其实暗中降低了找到有用信息的概率。最好使用比较简短的关键词,或者关键词再加简短的不完整语句,例如要把一个 Python list 每个元素加上 index 转为 tuple,可以用下面的查询

python turn list item to indexed tuple

没必要使用冗长的完整语句查询

how do I turn a list item to an indexed tuple in Python?

另外,保证自己的关键词比较通用(也就是遇到问题大家都会用的一些词语),例如右键菜单相关的问题,context menu 就是一个必要的词语。如果想要精确匹配,就用比较多的关键词缩小候选范围,反之就可以用较少的关键词。

这里有一个例外,就是搜索错误,例如运行 python 代码,出现一个错误,程序打印了许多 stacktrace。这时候可以直接把异常复制粘贴来搜索相关问题,找到解决方案。但是也不能复制过多无用的信息,例如,如果是自己的写的代码模块报错,文件名,第几行等信息,就不用复制,这些信息不是通用的,如果加入搜索查询中,反而会导致匹配的网页减少,降低找到答案的可能性。

如何确定搜索关键词?

不经常使用英语的人,面对的最大挑战,就是面对一个想要解决的问题,不知道用什么英语关键词来搜索,思维还是中式的。好的关键词很重要,如果关键词不对,就可能错过要找的东西。

我认为比较好的方式,是先想清楚我们到底想要问什么问题,特别是对于技术问题,问题发生的地方,现象是什么,例如我之前遇到的鼠标右键菜单卡顿的问题,右键菜单,发生的地方是文件管理器,系统是 windows,现象是卡顿,有了这些关键信息,很容易提出搜索词: windowsfile explorercontext menuhangs。根据这些检索词,从返回的结果中就能够找到满意的答案,如果少了关键词,结果差别很大。

另外,有时候一个检索词可能有近义词,如果这个检索词搜出来的结果不理想,可以换一个近义词试试。例如想要表达「无响应」,你可以说 hangs,也可以说 freezes。再比如,你想要禁止某个东西,可以说 prevent something from doing something,也可以说 disable something。换一个检索词或者说法可能就柳暗花明了!

积累专业相关英语词汇

使用英语搜索,一个需要长期培养的能力是知道中文和英文的对应关系,例如,文件浏览器无响应,那么我们要知道,文件浏览器用英语怎么说,无响应怎么表达,无响应可以说 “hangs” or “freezes”,右键菜单,我们要知道它的英文是 “context menu”;再比如我们想配置 vim 的自动补全 (Auto completion)功能,那么我们得知道自动补全用英语怎么来说,这些词语有的是没办法从字面翻译的,或者从字面翻译比较蹩脚。我们必须知道固定的说法,不能用 chinglish 或者机翻,否则搜索出来的结果也不好。平时注意积累本领域常用的中文词汇对应的英语词汇,搜索的时候就不会觉得写不出来检索词。

从搜索结果中寻找蛛丝马迹,递进式检索

有的时候,我们遇到了一个问题,如果对这个领域比较陌生,我们甚至不知道用什么关键词来搜索,不知道关键词,就搜不到有用的内容,搜不到有用的内容,就学不到相关的关键词,陷入了一种死循环。

这个时候可以先尽量写出自己认为正确的检索词,或者可能找到相关答案的检索词,采用旁敲侧击的方式来解决,大量翻阅返回的结果,这些返回的网页中,可能就包含我们需要的概念对应的专业词汇。对于复杂的问题,可能需要根据搜索返回的结果以及自己的理解,一步步优化自己的检索词,经过多个来回,才能找到自己想要的答案。

例如,我们看到别人在视频中使用 vim 的命令行时,可以使用 Tab 来补全命令的参数或者补全命令,这个需要进行设置才能生效或者达到自己需要的效果,但是我们不知道应该设置哪个选项,所以可以使用初步的检索词

vim Tab Completion Command line

然后从返回结果找到这个页面,进而知道有两个选项控制 vim 在命令行的自动补全功能,分别是 wildmenu 和 wildmode,知道这个以后,就可以比较轻松的找到相关的设置了。