興趣是第一源動力,很多職業最初的起源來自于個人對某一事物的好奇,由此產生了興趣而一發不可收拾,產品經理也不例外。產品經理的從業者都知道,這個職業隊伍從業者的經理很廣泛,包容度很大,專業性也很難有統一的標準,不同項目,或同一項目不同階段對產品經理的能力要求的側重點也不一,很多同行應該在入行前都問過自己,如何知道自己是不是適合做產品經理呢?
在復盤我這6年的工作經驗后,我得出的認知卻也異乎尋常的樸素——興趣是入行的最好老師。我所說的興趣不僅僅是對產品經理是做什么的,怎么做有興趣,更主要的是具體項目的興趣,作為-1歲的產品經理,當時興趣的焦點都關注在了科技界24小時的印鈔機——搜索引擎;
搜索引擎
時至今日,細細回想其當時對搜索引擎的癡迷,內心深處還有難以言喻的共鳴,由于當時專業所限,對搜索引擎的接觸雖然很多,但是究其原理,所知甚少,故因為好奇,所以想要了解;
1.1 搜索引擎的調研
猶記得那年,Alphabet還沒成立,谷歌還沒退出中國,日常接觸的最多的搜索引擎還是——Google,國內百度的發展也在如火如荼的進行著,在我的家鄉,多數人對于“百度一下,你就知道”也是耳熟能詳;
那些年國內的谷歌是這樣的:
那些年百度的首頁也還沒更新:
除了目前看來這兩款主流的搜索引擎,當時這一領域可是熱鬧非凡,雄心勃勃的騰訊搜搜,搜狐的搜狗,雅虎搜索,聲勢浩大的微軟必應,國外還有大量的同類產品,ASK JEEVES,Naver,新創搜索引擎——Duckduckgo等等,得益于盈利性極強的商業模式,加之龐大的用戶增長紅利,使得搜索引擎成為當之無愧的明星產品,尤其是受到新創引擎Duckduckgo的勵志故事,并在深入了解google當年的車庫發家史后,我也雄心勃勃的讀起了PageRank,渴望破解搜索引擎背后產品的秘密,也打造一款廣受喜愛的搜索引擎;
1.2 PageRank解密
如果讀者了解過Google的車庫創業史,應該了解PageRank對于Google的重要性,早期的google為什么使用體驗好,給人以簡單可依賴的感覺,不僅僅在于其早期沒有廣告的簡潔界面,獨自的快照系統、動態生成摘要信息,以及為實現高速檢索而設置的分散系統(數千臺規模的Linux集群)等等,最重要的優點就在于它檢索的正確性,而PageRank就是這種正確性的保證,它可以自動判斷網頁重要性;
PageRank的核心思想有2點:
如果一個網頁被很多其他網頁鏈接到的話說明這個網頁比較重要,也就是pagerank值會相對較高;
如果一個pagerank值很高的網頁鏈接到一個其他的網頁,那么被鏈接到的網頁的pagerank值會相應地因此而提高;
下面這張圖來自Wikipedia,比較形象地解釋了核心思想,每個球代表一個網頁,球的大小反應了網頁的pagerank值的大小。指向網頁B和網頁E的鏈接很多,所以B和E的pagerank值較高,另外,雖然很少有網頁指向C,但是最重要的網頁B指向了C,所以C的pagerank值比E還要大。
PageRank有效地利用了 Web 所擁有的龐大鏈接構造的特性。 從網頁A導向網頁B的鏈接被看作是對頁面A對頁面B的支持投票,Google根據這個投票數來判斷頁面的重要性。可是 Google 不單單只看投票數(即鏈接數),對投票的頁面也進行分析。「重要性」高的頁面所投的票的評價會更高,因為接受這個投票頁面會被理解為「重要的物品」。
根據這樣的分析,得到了高評價的重要頁面會被給予較高的 Page Rank(網頁等級),在檢索結果內的名次也會提高。PageRank 是 Google 中表示網頁重要性的綜合性指標,而且不會受到各種檢索(引擎)的影響。倒不如說,PageRank 就是基于對"使用復雜的算法而得到的鏈接構造"的分析,從而得出的各網頁本身的特性。當然,重要性高的頁面如果和檢索詞句沒有關聯同樣也沒有任何意義。為此 Google 使用了精練后的文本匹配技術,使得能夠檢索出重要而且正確的頁面。
簡而言之,PageRank 是基于「從許多優質的網頁鏈接過來的網頁,必定還是優質網頁」的回歸關系,來判定所有網頁的重要性。
對PageRank基本了解后,如何構建一套搜索引擎,當時筆者還是一臉茫然,后來又陸續了解了Luence、Nutch,才慢慢摸索了一些構建搜索引擎的基礎,以及對搜索引擎產品背后的邏輯的直觀認識,現在看來,當時的認知還真只是皮毛;
吳軍《數學之美》里面提到搜索引擎分為三大塊:下載,索引,搜索。
下載:
這部分是需要把你想要搜索的范圍的原始數據。如果搜索的范疇是網頁上的內容,那么它就是一個網絡爬蟲。我當時做的是一個校內網的搜索引擎,所以就寫了一個爬蟲從校園網主頁開始下載,分析網頁內的鏈接把符合要求的鏈接加入待下載隊列,這樣一直把所有校園網的網頁全部都下載下來。
索引
搜索引擎之所以可以搜的那么快,都是索引的功勞。索引是一種專門針對搜索優化的結構,詳情可以百度倒排索引 。
前面搜索下載的是網頁全文,里面的html標簽是不需要被搜索的,所以要把數據清洗一下,提取出其中的重要內容。文本內容的預處理還需要分詞 、去除無意義的停用詞等。分詞是什么呢…你還是百度吧
建立索引有現成的庫:LUCENE ,它自帶有幾個默認分詞器,如果想要你的搜索引擎搜索的結果更好,你可以使用的中文分詞器(這個當然也有現成的工具啦,ik分詞,NLPIR這些都是現有的解決方案,效果也還不錯)如果之前沒有接觸過它,那就需要學習一下。
索引建立好了,接下來就是搜索了。搜索是將根據查詢詞,搜索索引內匹配的內容,然后展示出來。符合查詢詞的結果多了的時候怎么辦呢,這就涉及到排序的問題,這就有點復雜啦,這就涉及到很多排序算法比如tfidf之類的東西,不過這些lucene的api也幫你做了,它的內部有一個打分機制,將打分高放在搜索結果的前面。