技術人如何高效搜索

  • 2019 年 11 月 5 日
  • 筆記

技術人/程式設計師的日常工作,在一些不了解IT的人士看來,可能是些燒腦的、創新的、數理邏輯的、高強度的高智商工作,而程式設計師自己,在寫出一頁solarized-dark黑主題色、花花綠綠關鍵字的程式碼後,確實可能無來由的散發出睥睨天下氣吞山河直呼「還有誰」的王者氣息。 但不爭的現實是,創造性工作在很多程式設計師的日常佔比值其實少的可憐,重複勞動才是主基調,是不是有點諷刺?更諷刺的是,在面對自己搞不定的簡單問題,隨便搜索一下基本上可以找到完整詳實的解決方案,都不用怎麼動腦。而最最諷刺的是,面對複雜的問題或者疑難雜症,有些人連如何搜索如何閱讀都搞不定,"磚"就在那裡都不知道怎麼"搬",實在是太尷尬了。

本文集合一些搜索的小技巧和個人搜索習慣,大家如果有一些更加優雅或者高效的技巧,歡迎文末留言分享。

> 選擇搜索引擎

不要用百度!

不要用百度!

不要用百度!

重要的事情說三遍。首選Google, 其次Google鏡像, 真沒轍了就用Bing。其他的一些垂直搜索,比如極客搜索(s.geekbang.org) 搜索一些極客幫體系內的文章,都是比較有乾貨的內容;或者聚合搜索比如虫部落(search.chongbuluo.com)。

總之,科學上網很重要(怎麼番羽這裡不教),實在沒條件臨時用Google鏡像或者Bing頂頂也行。百度拿來測測能不能上網就夠了,不然看這一屏的廣告你不來氣?(啥時候沒有這些廣告,我再考慮支援國產!)

> 搜索引擎的常用語法

本文的搜索主要以 Google 的搜索語法為主,其他搜索引擎大同小異,可自行查看高級搜索幫助。在個人展開之前,先把「Google搜索幫助」截取一些內容給大家瀏覽一番:

image.png

⇧⇧⇧ 搜索運算符 ⇧⇧⇧

⇧⇧⇧ 高級搜索頁 ⇧⇧⇧

下面正式介紹一下個人經常使用的幾種高級搜索語法,用好這幾個基本上滿足大部分的搜索場景了。

image.png

1. 「 」 雙引號

這個放到第一位,是因為技術人搜索英文的時候經常有些片語被拆碎了,而雙引號把搜索詞括起來,不僅僅代表完全匹配,還表示返回頁面必須必須包含雙引號中的所有詞,順序也必須完全一致。

image.png

image.png

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...等你一切搗鼓完後發現還是問題依舊的時候,已經要虛脫了...

image.png

上面錯誤示範的根源就是因為找了一個錯誤的Entry入口,吃別人吃剩下的,不求甚解的苦果。如果我們直接用Google搜索maven官方deploy command,把第一篇理解透徹了,這個問題不用5分鐘就DONE了。文中清楚的提到了pom file的問題,用默認生成的generic pom肯定會少了jar內含的pom依賴項,所以要把jar內的pom解壓出來在命令行里指定清楚一併上傳到nexus上。

所以別怪我太啰嗦,筆者對博文本身真的沒有偏見,看不上的是有些人不求甚解的態度,別人咀嚼後的內容品質參差不齊,在你沒有能力甄別之前,請回到最原始的地方(比如官網)去拿第一手資料。

> 手氣不錯

Google的這個手氣不錯功能,其實很贊,它的作用就是不展示搜索結果頁,直接跳轉到搜索關鍵字相關的網頁,簡化了顯示搜索頁用戶再點擊一次的流程。這個相當考驗Google的智慧水平了,反正百度是沒有的...

image.png

Tips: 米么的域名曾經從memedai.cn切換到了mi-me.com,經過我的試驗,新設備第一次的"手氣不錯"最大可能是跳到memedai.cn, 但是只要點過了重定向,下一次的"手氣不錯"就直接進入mi-me.com了,如何讓Google永久記住新的域名,應該是SEO的範疇了,不過Google對於網址跳轉的瞬時識別並切換,不得不點贊一下。

> 結束語

本文無法面面俱到, 類似"論文搜索"一些更加具體的使用場景就不一一列舉了,相信到這些級別的讀者對於文中搜索技巧應該爛熟於胸或者更勝一籌的了,那就權當拋磚引玉了。 搜索引擎巨頭們每時每刻都在想各種的演算法或者人工智慧手段來提高搜索的效率和精準度(有些除外),而我們作為使用者連基本的搜索都做不好的話,是真真的暴殄天物!

只要搜の好,我好你好他好大家好!

Tags: