這個題目來自知乎上的一個問題,我今年初開始做搜索相關(guān)的工作畔柔,到今天已經(jīng)整整7個月氯夷,于是想借這個題目將自己所理解的搜索引擎原理寫下來。
我不是專業(yè)的搜索工程師靶擦,日常工作主要是做搜索產(chǎn)品評測腮考,這個身份的缺點是自己的理解會有一些局限性,優(yōu)點是寫出來的內(nèi)容比較通俗易懂玄捕。
希望通過這些內(nèi)容能幫助大家更好的理解搜索產(chǎn)品踩蔚。
搜索引擎的第1步:抓取內(nèi)容。
百度枚粘、360以及搜狗等通用搜索引擎的處理對象是整個互聯(lián)網(wǎng)中上千億的網(wǎng)頁馅闽,所以搜索引擎需要面對的首要問題是如何將這些網(wǎng)頁下載到自己的服務(wù)器上。
進行這一任務(wù)的是一種被稱為“網(wǎng)絡(luò)爬蟲”的程序馍迄,搜索引擎會派出無數(shù)的“網(wǎng)絡(luò)爬蟲”按照一定的策略(如廣度優(yōu)先或者深度優(yōu)先)完成網(wǎng)頁抓取任務(wù)福也。
知乎的搜索是站內(nèi)搜索,處理對象是自己網(wǎng)站的內(nèi)容攀圈,在用戶完成內(nèi)容生產(chǎn)的同時暴凑,這些內(nèi)容就存儲到了知乎的服務(wù)器上。所以這一步對知乎來說是沒有問題的量承。
搜索引擎的第2步:建立索引搬设。
索引過程中一個很重要的步驟是分詞穴店,如這句話“化妝品和服裝”,正確的分詞方法應(yīng)該是[化妝品][和][服裝]拿穴,如果將“和”泣洞、“服”兩個字結(jié)合分成“和服”的話那么結(jié)果自然就不會相關(guān)。分詞背后需要有強大的詞庫儲備(并且需要時時更新)默色,以及強大的語義理解系統(tǒng)(比如上面的例子中球凰,“和服”是一個有意義的詞,但在這個場景下這樣分詞是有問題的)腿宰。
搜索引擎會為每個網(wǎng)頁(文檔)建立索引呕诉,其中可能包括網(wǎng)頁包含的詞組、詞組出現(xiàn)的位置(比如“北京大學(xué)”這個詞吃度,如果拆分成“北京”和“大學(xué)”兩個term甩挫,那么這兩個term的位置一定要緊挨著,并且北京在前椿每,否則語義會發(fā)生極大的變化)和頻率伊者、網(wǎng)頁的內(nèi)外鏈、甚至qanchor數(shù)據(jù)(如果用戶搜索“A"這個關(guān)鍵詞间护,點擊了網(wǎng)頁“B"亦渗,那么 B就是A的qancher)等。這些因子在決定搜索結(jié)果排序中都有很大的影響汁尺。
因為知乎的獨特性法精,每個回答對應(yīng)的索引除了上面提到的部分因素外,還可能會包括贊同數(shù)痴突、反對數(shù)搂蜓、感謝數(shù)、所屬的話題苞也、回答者(以及擅長的話題)等等洛勉。當然包含的因子越多,對搜索引擎的存儲和計算性能等都是巨大的挑戰(zhàn)如迟。
建立索引這個步驟難度較大收毫,即便是通用搜索引擎也在不停的優(yōu)化。
搜索引擎的第3步:確定排序殷勘。
當用戶輸入一個query后此再,備選結(jié)果集合中的每一條結(jié)果最終會通過一系列計算過程最終得到一個分數(shù),然后按照分數(shù)從高到低排序玲销。一條結(jié)果的得分高低主要跟下面幾個因素有關(guān)输拇,當然每個因素的權(quán)重因子也需要不斷的調(diào)整來提升準確性。
1贤斜、文本相關(guān)
這個很好理解策吠,網(wǎng)頁(問答)中包含的詞組需要和搜索詞一致逛裤。
2、用戶行為模型
對知乎中的回答來說猴抹,有以下幾個真理:
/點贊多的結(jié)果要好于點贊少的結(jié)果带族;
/反對少的結(jié)果要好于反對多的結(jié)果;
/自己點過贊的結(jié)果要好于普通的結(jié)果蟀给;
/擅長問題所屬領(lǐng)域的回答者的答案要好于普通的回答者蝙砌;如張三很擅長回答搜索領(lǐng)域相關(guān)的問題,李四擅長回答金融領(lǐng)域相關(guān)的問題跋理,那么對于一個搜索領(lǐng)域的問題择克,張三的回答要好于李四的回答。這其中用戶擅長的話題可以采用用戶自己標注或者官方標注的方式前普,也可以根據(jù)用戶的回答記錄智能標注肚邢,比如現(xiàn)在很多領(lǐng)域中都會推薦最佳回答者。
/用戶最終有效點擊了的結(jié)果要好于用戶沒有點擊或者是無效點擊的結(jié)果汁政。所謂有效點擊指的是用戶點擊并且有合理的停留時間道偷,而不是點擊之后很快就走了。
3记劈、網(wǎng)頁質(zhì)量
在搜索引擎中如果某個網(wǎng)頁被識別為網(wǎng)頁質(zhì)量差(作弊,廣告多并巍,頁面空短)目木,那么會被嚴重降權(quán)甚至屏蔽。
知乎上最近有人涉嫌借助知乎做問答營銷懊渡,如這篇文章提到的刽射,這類結(jié)果除了依靠用戶舉報外也需要用戶算法來識別。此外抖機靈的回答某種程度上也需要進行打壓剃执。
搜索是個很復(fù)雜的產(chǎn)品誓禁,技術(shù)門檻比較高,其中包含非常多的策略肾档。即便是通用搜索引擎目前也在不斷優(yōu)化當前的策略摹恰,同時也在添加新的策略。比如時效性策略怒见,同義詞策略俗慈,網(wǎng)頁質(zhì)量策略,網(wǎng)站權(quán)重策略等等遣耍。