興趣是第一源動力,很多職業(yè)最初的起源來自于個人對某一事物的好奇,由此產(chǎn)生了興趣而一發(fā)不可收拾,產(chǎn)品經(jīng)理也不例外。產(chǎn)品經(jīng)理的從業(yè)者都知道,這個職業(yè)隊伍從業(yè)者的經(jīng)理很廣泛,包容度很大,專業(yè)性也很難有統(tǒng)一的標準,不同項目,或同一項目不同階段對產(chǎn)品經(jīng)理的能力要求的側重點也不一,很多同行應該在入行前都問過自己,如何知道自己是不是適合做產(chǎn)品經(jīng)理呢?
在復盤我這6年的工作經(jīng)驗后,我得出的認知卻也異乎尋常的樸素——興趣是入行的最好老師。我所說的興趣不僅僅是對產(chǎn)品經(jīng)理是做什么的,怎么做有興趣,更主要的是具體項目的興趣,作為-1歲的產(chǎn)品經(jīng)理,當時興趣的焦點都關注在了科技界24小時的印鈔機——搜索引擎;
搜索引擎
時至今日,細細回想其當時對搜索引擎的癡迷,內心深處還有難以言喻的共鳴,由于當時專業(yè)所限,對搜索引擎的接觸雖然很多,但是究其原理,所知甚少,故因為好奇,所以想要了解;
1.1 搜索引擎的調研
猶記得那年,Alphabet還沒成立,谷歌還沒退出中國,日常接觸的最多的搜索引擎還是——Google,國內百度的發(fā)展也在如火如荼的進行著,在我的家鄉(xiāng),多數(shù)人對于“百度一下,你就知道”也是耳熟能詳;
那些年國內的谷歌是這樣的:

那些年百度的首頁也還沒更新:

除了目前看來這兩款主流的搜索引擎,當時這一領域可是熱鬧非凡,雄心勃勃的騰訊搜搜,搜狐的搜狗,雅虎搜索,聲勢浩大的微軟必應,國外還有大量的同類產(chǎn)品,ASK JEEVES,Naver,新創(chuàng)搜索引擎——Duckduckgo等等,得益于盈利性極強的商業(yè)模式,加之龐大的用戶增長紅利,使得搜索引擎成為當之無愧的明星產(chǎn)品,尤其是受到新創(chuàng)引擎Duckduckgo的勵志故事,并在深入了解google當年的車庫發(fā)家史后,我也雄心勃勃的讀起了PageRank,渴望破解搜索引擎背后產(chǎn)品的秘密,也打造一款廣受喜愛的搜索引擎;
1.2 PageRank解密
如果讀者了解過Google的車庫創(chuàng)業(yè)史,應該了解PageRank對于Google的重要性,早期的google為什么使用體驗好,給人以簡單可依賴的感覺,不僅僅在于其早期沒有廣告的簡潔界面,獨自的快照系統(tǒng)、動態(tài)生成摘要信息,以及為實現(xiàn)高速檢索而設置的分散系統(tǒng)(數(shù)千臺規(guī)模的Linux集群)等等,最重要的優(yōu)點就在于它檢索的正確性,而PageRank就是這種正確性的保證,它可以自動判斷網(wǎng)頁重要性;
PageRank的核心思想有2點:
如果一個網(wǎng)頁被很多其他網(wǎng)頁鏈接到的話說明這個網(wǎng)頁比較重要,也就是pagerank值會相對較高;
如果一個pagerank值很高的網(wǎng)頁鏈接到一個其他的網(wǎng)頁,那么被鏈接到的網(wǎng)頁的pagerank值會相應地因此而提高;
下面這張圖來自Wikipedia,比較形象地解釋了核心思想,每個球代表一個網(wǎng)頁,球的大小反應了網(wǎng)頁的pagerank值的大小。指向網(wǎng)頁B和網(wǎng)頁E的鏈接很多,所以B和E的pagerank值較高,另外,雖然很少有網(wǎng)頁指向C,但是最重要的網(wǎng)頁B指向了C,所以C的pagerank值比E還要大。

PageRank有效地利用了 Web 所擁有的龐大鏈接構造的特性。 從網(wǎng)頁A導向網(wǎng)頁B的鏈接被看作是對頁面A對頁面B的支持投票,Google根據(jù)這個投票數(shù)來判斷頁面的重要性??墒?Google 不單單只看投票數(shù)(即鏈接數(shù)),對投票的頁面也進行分析?!钢匾浴垢叩捻撁嫠兜钠钡脑u價會更高,因為接受這個投票頁面會被理解為「重要的物品」。
根據(jù)這樣的分析,得到了高評價的重要頁面會被給予較高的 Page Rank(網(wǎng)頁等級),在檢索結果內的名次也會提高。PageRank 是 Google 中表示網(wǎng)頁重要性的綜合性指標,而且不會受到各種檢索(引擎)的影響。倒不如說,PageRank 就是基于對"使用復雜的算法而得到的鏈接構造"的分析,從而得出的各網(wǎng)頁本身的特性。當然,重要性高的頁面如果和檢索詞句沒有關聯(lián)同樣也沒有任何意義。為此 Google 使用了精練后的文本匹配技術,使得能夠檢索出重要而且正確的頁面。
簡而言之,PageRank 是基于「從許多優(yōu)質的網(wǎng)頁鏈接過來的網(wǎng)頁,必定還是優(yōu)質網(wǎng)頁」的回歸關系,來判定所有網(wǎng)頁的重要性。
對PageRank基本了解后,如何構建一套搜索引擎,當時筆者還是一臉茫然,后來又陸續(xù)了解了Luence、Nutch,才慢慢摸索了一些構建搜索引擎的基礎,以及對搜索引擎產(chǎn)品背后的邏輯的直觀認識,現(xiàn)在看來,當時的認知還真只是皮毛;

吳軍《數(shù)學之美》里面提到搜索引擎分為三大塊:下載,索引,搜索。
下載:
這部分是需要把你想要搜索的范圍的原始數(shù)據(jù)。如果搜索的范疇是網(wǎng)頁上的內容,那么它就是一個網(wǎng)絡爬蟲。我當時做的是一個校內網(wǎng)的搜索引擎,所以就寫了一個爬蟲從校園網(wǎng)主頁開始下載,分析網(wǎng)頁內的鏈接把符合要求的鏈接加入待下載隊列,這樣一直把所有校園網(wǎng)的網(wǎng)頁全部都下載下來。
索引
搜索引擎之所以可以搜的那么快,都是索引的功勞。索引是一種專門針對搜索優(yōu)化的結構,詳情可以百度倒排索引 。
前面搜索下載的是網(wǎng)頁全文,里面的html標簽是不需要被搜索的,所以要把數(shù)據(jù)清洗一下,提取出其中的重要內容。文本內容的預處理還需要分詞 、去除無意義的停用詞等。分詞是什么呢…你還是百度吧
建立索引有現(xiàn)成的庫:LUCENE ,它自帶有幾個默認分詞器,如果想要你的搜索引擎搜索的結果更好,你可以使用的中文分詞器(這個當然也有現(xiàn)成的工具啦,ik分詞,NLPIR這些都是現(xiàn)有的解決方案,效果也還不錯)如果之前沒有接觸過它,那就需要學習一下。
索引建立好了,接下來就是搜索了。搜索是將根據(jù)查詢詞,搜索索引內匹配的內容,然后展示出來。符合查詢詞的結果多了的時候怎么辦呢,這就涉及到排序的問題,這就有點復雜啦,這就涉及到很多排序算法比如tfidf之類的東西,不過這些lucene的api也幫你做了,它的內部有一個打分機制,將打分高放在搜索結果的前面。