或許你會認(rèn)為這篇文章的內(nèi)容極為基礎(chǔ)。事實上,我也是這么覺得的。但從很多同學(xué)的留言以及QQ群中的討論來看,還是有必要簡單地科普一下,分享我的一點“搜索”經(jīng)驗。
如果你在學(xué)習(xí)編程的過程中,以及平常的生活中,可以很自然地利用搜索引擎解決問題,那么你已經(jīng)達(dá)到本文所期望的目標(biāo)。否則,你應(yīng)當(dāng)認(rèn)識到:
正確地使用搜索引擎是學(xué)習(xí)編程的必備技能
現(xiàn)在是互聯(lián)網(wǎng)的時代,學(xué)習(xí)的方式已經(jīng)同過去完全不同。二十年前你想去學(xué)習(xí)一門新技能,只能通過問人、圖書館查資料、買書、上學(xué)習(xí)班等現(xiàn)在被稱之為“線下”的方式。后來,搜索引擎在一定程度上改變了整個世界的運(yùn)作方式。如今你遇到問題,第一反應(yīng)不是去用搜索引擎,而仍然選擇問人,那我只能善意地認(rèn)為你是個“復(fù)古”的人。
當(dāng)然可能更多時候是,你用了一下搜索引擎,但是沒得到你想要的結(jié)果,于是你又只好去問人。這種情況,你就需要一點搜索引擎使用技巧和意識:
用 google 作為你的默認(rèn)搜索引擎
google 是目前這個星球上最好用的搜索引擎,沒有之一。按理說,在開放的互聯(lián)網(wǎng)上,有一個最好用的產(chǎn)品,你沒有理由不去用它,而要勉強(qiáng)于其他拙劣的替代產(chǎn)品。然而因為一些眾所周知的不宜在公開場合討論的原因,你可能不得不選擇一些名聲不那么好的搜索引擎。
所以,如果你立志成為一名程序員,那么為了更好地get“搜索”這項必備技能,首先還得獲取另一項不宜在公開場合討論的技能。這就不是我們今天要討論的了。
選擇合適的搜索關(guān)鍵詞
提出一個好問題,本身就對解決這個問題起了很大的幫助。選擇搜索關(guān)鍵詞也是一樣。如果你只是用“我安裝python為什么不成功”、“運(yùn)行python的時候報錯”這樣空泛的大白話去搜索,天知道這要怎么解決……
- 用關(guān)鍵詞,而不是整個句子
雖然現(xiàn)在的搜索引擎已經(jīng)在語義分析和分詞上做得相當(dāng)成熟了,但還是建議用關(guān)鍵詞來描述你的問題,這樣可以使你的問題更加具體和精準(zhǔn)。通常,用空格分割的1~3個關(guān)鍵詞,可以比較得到比較好的搜索結(jié)果。
- 直接使用報錯信息搜索
如果你是在為你的程序無法運(yùn)行而尋找解決方案,那么直接使用報錯提示信息進(jìn)行搜索是最好的選擇。一般來說,代碼異常,都會輸出異常的類型和位置,而應(yīng)用軟件的錯誤甚至還會提供對應(yīng)的錯誤碼,以便于定位和解決問題。用這些信息去搜索,比你用自然語言描述錯誤現(xiàn)象要精準(zhǔn)幾百倍。
- 添加范圍限定的關(guān)鍵詞,縮小搜索范圍
比如你要搜索python相關(guān)的一個問題,那么在你的關(guān)鍵詞里加上python會好過直接搜索你的具體問題。比如你想了解Requests模塊的具體用法,如果不加上python,則很難找到你要的信息。更進(jìn)一步,如果你清楚你的問題是django方面的,那么直接加上django關(guān)鍵字會比加python更有效。但要注意,你得分清你的問題屬于哪個范圍。如果是因為你的數(shù)據(jù)庫和你操作系統(tǒng)不兼容而導(dǎo)致的問題,你卻一直用python關(guān)鍵字進(jìn)行搜索,那就跑偏了。
- 避免引入歧義
有的時候,你會發(fā)現(xiàn)你搜索的關(guān)鍵詞會導(dǎo)向一個被熱議的問題,但你確信這個問題并不是你想要的。這時候?qū)幙煞艞夁@個會導(dǎo)致歧義的關(guān)鍵詞。當(dāng)然還有另外的解決方法,稍后我會提到。
還有時候,歧義是因為你錯誤的推測而帶來,比如上個例子中的“python”導(dǎo)致查不到數(shù)據(jù)庫的問題。所以在搜索過程中,你需要根據(jù)情況調(diào)整你的關(guān)鍵詞。
- 逐步修正關(guān)鍵詞
復(fù)雜的問題往往無法一蹴而就地解決。搜索的過程也是一個反復(fù)思考的過程,需要通過已有的結(jié)果推斷和修正,最終達(dá)到目標(biāo)。
分辨搜索結(jié)果的質(zhì)量
最近一段時間,國內(nèi)某知名搜索引擎被眾人口誅筆伐,對于搜索結(jié)果的排名和誤導(dǎo)也是其中一條罪狀。雖然搜索編程相關(guān)的資料不太至于讓你上當(dāng)受騙,但搜索結(jié)果的質(zhì)量還是有可能影響到你的學(xué)習(xí)??赡苣阆螺d到的軟件不是官方正版,而是被植入了木馬病毒的版本。也可能你輕信了投放推廣的培訓(xùn)機(jī)構(gòu),去上了一個糟糕的培訓(xùn)課程。更多的情況是,搜索出的結(jié)果里,有很多無效的、重復(fù)的甚至錯誤的內(nèi)容,耽誤你的時間,誤導(dǎo)你的方向。
鑒于此,如果你無法選擇更好的搜索引擎,那我只能建議你,認(rèn)真分辨搜索結(jié)果的質(zhì)量。要對搜索結(jié)果保持懷疑的態(tài)度,不要只迷信排名靠前的結(jié)果,它們可能是推廣(注意點看,一般搜索引擎都有標(biāo)注),也可能是做過一些排名優(yōu)化,或者僅僅是運(yùn)氣好排到了前面。下載軟件包盡量去官方的網(wǎng)站,查閱資料盡量選擇官方的文檔。另外,獨(dú)立技術(shù)博客的質(zhì)量要高于那種掛滿小廣告的資源站。
對于編程方面的問題來說,還有種選擇是直接去相關(guān)的網(wǎng)站進(jìn)行搜索。這里強(qiáng)烈推薦又一個程序員的必備工具:StackOverflow。多次有人問我,英語不好能不能編程。我的回答是,可以,但你會錯過很多好東西。比如這時候,你就只能去用中文同類網(wǎng)站。有個SegmentFault屬于國內(nèi)做得不錯的,但在內(nèi)容上肯定無法與StackOverflow相提并論。
另外,知乎也是個可以搜索問題的去處,但一般是偏向評價性質(zhì)的問題,而非具體的技術(shù)問題。
搜索引擎的高級技巧
大多數(shù)搜索引擎,除了直接搜索關(guān)鍵字,都還會提供一些高級功能,常用的包括:
- 站內(nèi)搜索 site
示例:在搜索框中搜索
python site:http://zhihu.com
就可以把搜索結(jié)果限定在知乎內(nèi)。對于一些沒有站內(nèi)搜索或站內(nèi)搜索不好的網(wǎng)站來說很有用。
- 完全匹配 ""(雙引號)
示例:在搜索框中搜索
"matching query does not exist"
可以得到精確匹配這段文字的結(jié)果,而不是把它們當(dāng)做多個關(guān)鍵詞來搜索。
- 去除結(jié)果 -(減號)
示例:在搜索框中搜索
django -unchained
單純搜索django,會得到一部分同名電影《Django Unchained》的結(jié)果。通過減號可以去除包含unchained的結(jié)果。注意減號前面必須有空格,后面必須沒空格。
- 文件類型 filetype
示例:在搜索框中搜索
python filetype:pdf
得到的結(jié)果都是pdf類型的。這對于搜索文檔或者ppt很有幫助。
百度現(xiàn)在將時間、文件類型、站點三項過濾加在了搜索結(jié)果的上方,這點我覺得還是不錯的,畢竟大多數(shù)人不會像程序員一樣習(xí)慣使用代碼和符號語言。
最后,對于需要寫論文的同學(xué)來說,還有個不能不去的地方就是
http://scholar.google.com
同樣,如果你又沒法好好使用它,要找替代品。那我真心不想告訴你還有個
http://xueshu.baidu.com
因為我試過了,這上面連我自己的論文都搜不到!
Crossin的編程教室