PM技術(shù)課 | 搜索引擎知多少?
“搜索”在這個(gè)數(shù)據(jù)信息冗雜的時(shí)代里,充當(dāng)著人們信息的篩選器,人們通過(guò)使用搜索功能,可以獲得自己想要的內(nèi)容,屏蔽掉無(wú)用的信息。對(duì)于商家來(lái)說(shuō),理論上,搜索功能在一定程度上可以增加長(zhǎng)尾信息的曝光度。但是,總所周知,搜索引擎的排序規(guī)則實(shí)際上飽含水分,競(jìng)價(jià)排名的規(guī)則下,長(zhǎng)尾信息的曝光可能就打水漂了。所以,無(wú)論是C端還是B端的產(chǎn)品經(jīng)理,深諳搜索引擎規(guī)則,并學(xué)會(huì)利用好搜索引擎都非常重要。
一、 初識(shí)搜索引擎
1. 搜索引擎簡(jiǎn)史
提及搜索引擎,大家腦海中就會(huì)浮現(xiàn)起國(guó)內(nèi)的百度和國(guó)外的Google,我們想要查找什么資料,直接在搜索框中輸入關(guān)鍵字,點(diǎn)擊搜索按鈕,之后就會(huì)展現(xiàn)搜索結(jié)果。
其實(shí)這只是搜索引擎的一部分,我們使用微博搜索某個(gè)明星,使用淘寶搜索商品,使用豆瓣搜索一本書(shū),都是搜索引擎。這些搜索引擎因?yàn)樘S?,我們反而沒(méi)有意識(shí)到。
搜索引擎本質(zhì)上是一種信息獲取方式。
搜索引擎主要經(jīng)歷了:分類(lèi)目錄、相關(guān)性搜索、高質(zhì)量搜索、個(gè)性化搜索四個(gè)階段。
在搜索引擎誕生前,我們使用分類(lèi)目錄來(lái)獲取信息。Yahoo!和國(guó)內(nèi)hao123是分類(lèi)目錄的代表。當(dāng)時(shí)信息相對(duì)較少,通過(guò)人工整理,把屬于各個(gè)類(lèi)別的高質(zhì)量網(wǎng)站羅列出來(lái),比如:按照財(cái)經(jīng)類(lèi)、新聞?lì)悺Ⅲw育類(lèi)、游戲類(lèi)等項(xiàng)目進(jìn)行整理,用戶(hù)可以通過(guò)分類(lèi)目錄來(lái)查找需要的信息。
但一個(gè)頁(yè)面的展示空間有限,分類(lèi)目錄也只能收錄少數(shù)的網(wǎng)站,絕大多數(shù)網(wǎng)站都無(wú)法被收錄,而那些沒(méi)有被收錄的信息,可能正是大家需要的。
有需求,就有商機(jī),搜索引擎順勢(shì)而生。
最早的搜索引擎,通過(guò)查找用戶(hù)輸入的關(guān)鍵詞與網(wǎng)頁(yè)信息的匹配程度,也就是計(jì)算兩者的相關(guān)性,展示網(wǎng)頁(yè)列表,至于如何計(jì)算匹配程度,會(huì)在后文講解。
相比分類(lèi)目錄,這種方式可以收錄大量的網(wǎng)頁(yè),并按照用戶(hù)查詢(xún)的關(guān)鍵詞和網(wǎng)頁(yè)內(nèi)容的匹配程度進(jìn)行排序。
但這種方式有個(gè)巨大的問(wèn)題:只考慮了相關(guān)性,沒(méi)有考慮網(wǎng)頁(yè)的質(zhì)量。網(wǎng)頁(yè)可以通過(guò)大量羅列跟內(nèi)容無(wú)關(guān)的關(guān)鍵詞,來(lái)提高與關(guān)鍵詞的相關(guān)性。
比如:一家做教育的網(wǎng)站,可能會(huì)羅列明星、寵物、新聞甚至色情等高流量詞語(yǔ),這種“強(qiáng)行蹭流量”的方式,造成的后果就是搜索結(jié)果質(zhì)量并不好。
解決這個(gè)問(wèn)題的是Google,Google假設(shè)網(wǎng)頁(yè)的鏈接越多,網(wǎng)站質(zhì)量越高。利用網(wǎng)頁(yè)之間的鏈接數(shù)量來(lái)確定網(wǎng)頁(yè)質(zhì)量,一個(gè)網(wǎng)頁(yè)的鏈接數(shù)量越多,說(shuō)明在網(wǎng)頁(yè)在整個(gè)互聯(lián)網(wǎng)中質(zhì)量越高,Google的核心算法,也會(huì)在后文講述。
發(fā)展到現(xiàn)在,搜索引擎不僅需要解決相關(guān)性和質(zhì)量的問(wèn)題,還要更多考慮用戶(hù)的真實(shí)需求,比如:同樣輸入“蘋(píng)果”,年輕人可能想的是手機(jī),另外一些人想到的是水果。這就需要更加復(fù)雜的算法和程序了。
二、什么是好的搜索引擎
從分類(lèi)目錄、相關(guān)性搜索、高質(zhì)量搜索、個(gè)性化搜索,我們可以從搜索引擎的發(fā)展階段看出,搜索引擎越來(lái)越復(fù)雜,用戶(hù)體驗(yàn)也更好了。
那么,如果判斷一個(gè)搜索引擎好不好呢?
主要有三個(gè)評(píng)價(jià)標(biāo)準(zhǔn):
1. 好的搜索引擎要快
速度是用戶(hù)對(duì)搜索引擎的第一個(gè)印象。
當(dāng)用戶(hù)搜索一件商品,幾十秒還沒(méi)有搜索到,他可能去干其他事情了,就直接放棄購(gòu)買(mǎi)了!商用搜索引擎的查詢(xún)速度要達(dá)到毫秒級(jí),一眨眼的功夫,搜索結(jié)果就出來(lái)了,用戶(hù)體驗(yàn)就很好。
影響搜索速度的因素有很多,索引是最關(guān)鍵的因素之一,關(guān)于索引,會(huì)在下一節(jié)詳細(xì)介紹。
2. 要查的準(zhǔn)
當(dāng)用戶(hù)翻了3頁(yè)還找不到想要的內(nèi)容,干脆就不找了。
影響查詢(xún)準(zhǔn)確率的因素同樣有很多,主要有下面這三個(gè):
- 搜索引擎本身存儲(chǔ)的信息要全,對(duì)于百度等商用搜索引擎,這就要求爬蟲(chóng)能夠爬取全網(wǎng)內(nèi)容。
- 關(guān)鍵詞和網(wǎng)頁(yè)內(nèi)容的相關(guān)性要高,用戶(hù)搜索手機(jī),結(jié)果有很多單反相機(jī),就不太好了。
- 網(wǎng)頁(yè)信息質(zhì)量要高,Google發(fā)明的PageRank算法很巧妙地解決了這個(gè)問(wèn)題。
3. 搜索引擎要具有穩(wěn)定性
這也是用戶(hù)對(duì)大多數(shù)產(chǎn)品的要求,給用戶(hù)一個(gè)合理的預(yù)期,用戶(hù)才能夠信任這款產(chǎn)品,三天兩頭不能用了,體驗(yàn)就差極了。
搜索引擎是怎么工作的?
那么,搜索引擎到底是如何工作的呢?
一個(gè)最基本的搜索引擎主要分為:信息獲取、信息處理、信息展示三個(gè)模塊。
巧婦難為無(wú)米之炊,信息獲取是整個(gè)系統(tǒng)的基石。對(duì)商用搜索引擎而言,要求爬蟲(chóng)能夠爬取全網(wǎng)內(nèi)容,關(guān)于爬蟲(chóng),我們?cè)偕弦徽乱呀?jīng)介紹過(guò)了,這里就不再贅述。對(duì)網(wǎng)站內(nèi)部搜索引擎而言,也需要把信息匯總起來(lái),比如:電商平臺(tái),就需要把所有的產(chǎn)品信息存儲(chǔ)到一起。
信息處理主要是對(duì)原始數(shù)據(jù)清洗,存入數(shù)據(jù)庫(kù),這里最重要的一個(gè)環(huán)節(jié)就是構(gòu)建索引,相當(dāng)于給每一個(gè)內(nèi)容添加目錄,便于查找。
信息展示指搜索引擎根據(jù)用戶(hù)的查詢(xún)?cè)~(query)來(lái)進(jìn)行數(shù)據(jù)庫(kù)檢索,將結(jié)果展示給用戶(hù),主要涉及到用戶(hù)查詢(xún)內(nèi)容與網(wǎng)頁(yè)內(nèi)容的相關(guān)性分析、網(wǎng)頁(yè)質(zhì)量評(píng)價(jià)等技術(shù)。
雖然搜索引擎具體實(shí)現(xiàn)方式有差異,但所有的搜索服務(wù)都可以在這三個(gè)模塊的基礎(chǔ)上實(shí)現(xiàn)。
三、內(nèi)容索引
搜索引擎為什么這么快?
好的搜索引擎的評(píng)價(jià)標(biāo)準(zhǔn)之一就是要快,那么搜索引擎是如何實(shí)現(xiàn)的呢?
在開(kāi)始講解之前,我們可以考慮另外一個(gè)相似的問(wèn)題:如何在圖書(shū)館找到一本書(shū)?
最笨的方法是一個(gè)書(shū)架、一個(gè)書(shū)架地找,這會(huì)花費(fèi)大量的時(shí)間。
聰明一些的方式是通過(guò)索書(shū)號(hào),快速找到所在書(shū)架,進(jìn)而找到這本書(shū)。
搜索引擎中的索引就相當(dāng)于圖書(shū)館里每本書(shū)的索書(shū)號(hào),通過(guò)索引,可以快速找到需要的信息。
索引到底長(zhǎng)啥樣?
以網(wǎng)頁(yè)搜索引擎為例:下面這張圖是一個(gè)簡(jiǎn)單的索引系統(tǒng)(更準(zhǔn)確的說(shuō)法是倒排索引,至于為什么是倒排,這里先賣(mài)個(gè)小關(guān)子,后面會(huì)講到)。
左邊是關(guān)鍵詞,右邊是這個(gè)關(guān)鍵詞出現(xiàn)在哪個(gè)網(wǎng)頁(yè)中,一個(gè)關(guān)鍵詞可能同時(shí)出現(xiàn)在很多網(wǎng)頁(yè)中,所以是一對(duì)多的關(guān)系。
與圖書(shū)館索引不同是:一個(gè)圖書(shū)館再大,藏書(shū)畢竟還有有限的,圖書(shū)管理員可以手工給每個(gè)圖書(shū)建立索書(shū)號(hào)。但搜索引擎存儲(chǔ)的數(shù)據(jù)都是以?xún)|計(jì)算的,不可能手工建立索引,只能借助一些技術(shù)手段。
從上面的表格我們可以看出,構(gòu)建索引主要有兩個(gè)過(guò)程:查找關(guān)鍵詞,把關(guān)鍵詞和網(wǎng)頁(yè)對(duì)應(yīng)起來(lái)。
關(guān)鍵詞
構(gòu)建索引的前提是提取出關(guān)鍵詞,那么給定一個(gè)文本(也就是網(wǎng)頁(yè)的文字內(nèi)容),如何獲取里面的關(guān)鍵詞呢?
主要有兩步:首先是獲得文本里出現(xiàn)的所有詞語(yǔ),也叫做分詞,之后再?gòu)闹泻Y選一些作為關(guān)鍵詞。
第一步,分詞。
如果是一句英文,“Marry had a little lamb”,每個(gè)詞都是用空格分開(kāi)的,里面有“marry”、“had”、“a”’、“l(fā)ittle”、“l(fā)amb”這五個(gè)單詞,但中文“瑪麗有一只小綿羊”,因?yàn)闆](méi)有分隔符(比如:空格)把每個(gè)詞語(yǔ)分開(kāi),就有些麻煩了。
最容易想到的分詞方法就是查字典,把句子從左到右看一遍(程序員的說(shuō)法叫做遍歷),每個(gè)詞語(yǔ)如果在字典中出現(xiàn)過(guò)就標(biāo)記出來(lái)。
拿“瑪麗有一只小綿羊”舉例,比如:“瑪麗”這個(gè)詞在字典中出現(xiàn)過(guò),就把“瑪麗”作為一個(gè)詞語(yǔ),“有”在詞典中出現(xiàn)過(guò),就把“有”作為一個(gè)詞語(yǔ),就這樣一直做下去,最后可以分為“瑪麗、有、一只、小綿羊”。
這種最簡(jiǎn)單的方式可以解決一部分問(wèn)題,但也有很大的問(wèn)題,比如是“小”“綿羊”還是作為整體的“小綿羊”呢?
程序員使用統(tǒng)計(jì)學(xué)解決這個(gè)問(wèn)題:
從形式上看,詞是字的組合,兩個(gè)字組合在一起可能是一個(gè)詞語(yǔ),也可能不是,如果是詞語(yǔ)的可能性(概率)大一些,我們就傾向于認(rèn)為它們可以組成詞語(yǔ)。
這就像:天氣預(yù)報(bào)說(shuō)明天下雨的概率70%,不下雨的概率30%,我們就傾向于認(rèn)為明天下雨?!靶【d羊”一起出現(xiàn)的概率是70%,分開(kāi)出現(xiàn)的概率是30%,我們就傾向于認(rèn)為“小綿羊”是一個(gè)詞語(yǔ)。
那么,如何計(jì)算相鄰的字組成詞語(yǔ)的概率呢?
我們可以對(duì)語(yǔ)料庫(kù)中相鄰出現(xiàn)的各個(gè)字的組合的次數(shù)進(jìn)行統(tǒng)計(jì),計(jì)算所有的字相鄰出現(xiàn)的頻率,當(dāng)語(yǔ)料庫(kù)足夠大時(shí),出現(xiàn)的頻率越高,對(duì)應(yīng)的概率也就越高。
我們可以計(jì)算一個(gè)句子中所有組合出現(xiàn)的概率,產(chǎn)生最大的概率組合,就是分詞的結(jié)果。
比如:“瑪麗、有、一只、小綿羊”每一個(gè)詞語(yǔ)出現(xiàn)的概率就大于“瑪麗、有一、只、小、綿羊”等其他組合出現(xiàn)的概率,那么,我們就認(rèn)為這個(gè)句子就按照“瑪麗、有、一只、小綿羊”劃分。
第二步,獲得關(guān)鍵詞。
對(duì)所有的文本分詞之后會(huì)發(fā)現(xiàn),“的”、“了”、“嗎”、“也許”等沒(méi)有很強(qiáng)實(shí)際意義的功能詞有很多,相比之下“產(chǎn)品經(jīng)理”、“搜索引擎”等詞語(yǔ)更加具有實(shí)際意義的反而較少,后者更應(yīng)該作為關(guān)鍵詞。
于是,我們使用把所有這些功能詞存起來(lái),作為停用詞(stop word),如果一個(gè)詞語(yǔ)出現(xiàn)在停用詞中,就不能作為關(guān)鍵詞。于是,我們就從分詞結(jié)果中,獲得了關(guān)鍵詞。
下面是一個(gè)簡(jiǎn)單的停用詞表,可能看出,基本都是我們經(jīng)常使用的、沒(méi)有很強(qiáng)實(shí)際意義的詞語(yǔ)。
中文分詞是幾乎所有中文自然語(yǔ)言處理(Natural Language Processing)的基礎(chǔ),所以學(xué)術(shù)界和產(chǎn)業(yè)界對(duì)中文分詞的技術(shù)研究已經(jīng)很深入了,有高質(zhì)量的商用分詞庫(kù),也有像jieba這樣的開(kāi)源中文分詞庫(kù),可以免費(fèi)使用。
通過(guò)提取每個(gè)網(wǎng)頁(yè)的關(guān)鍵詞,最終每個(gè)網(wǎng)頁(yè)和關(guān)鍵詞的對(duì)應(yīng)關(guān)系如下:
需要注意的是:獲取關(guān)鍵詞不僅用在網(wǎng)頁(yè)處理,而且也用在輸入搜索框中。當(dāng)我們搜索一句中文的時(shí)候,搜索引擎內(nèi)部會(huì)進(jìn)行分詞、去掉停用詞,獲得關(guān)鍵詞,之后再進(jìn)行后續(xù)處理。
倒排索引
現(xiàn)在,我們已經(jīng)建立好了索引,對(duì)于每一個(gè)網(wǎng)頁(yè),我們找到了出現(xiàn)的所有關(guān)鍵詞。
當(dāng)用戶(hù)查詢(xún)時(shí),我們從頭到尾,對(duì)每一篇文件掃描一遍,看哪個(gè)網(wǎng)頁(yè)出現(xiàn)了用戶(hù)查詢(xún)的關(guān)鍵詞,就把這個(gè)文件作為搜索結(jié)果。
但問(wèn)題是:動(dòng)輒上億的網(wǎng)頁(yè)數(shù)量,從頭到尾掃描一次就要花好長(zhǎng)時(shí)間,根本無(wú)法滿(mǎn)足正常的需求,更別說(shuō)快速響應(yīng)了。
那我們能不能把關(guān)鍵詞放前面,網(wǎng)頁(yè)放后面?
這樣,當(dāng)我們檢索的關(guān)鍵詞的時(shí)候,不需要遍歷整個(gè)系統(tǒng),只用查找對(duì)應(yīng)的幾個(gè)關(guān)鍵詞,就可以找到需要的網(wǎng)頁(yè)了!
對(duì)計(jì)算機(jī)而言,直接尋找關(guān)鍵詞所在位置的信息,所需的時(shí)間非常短,完全可以滿(mǎn)足搜索的需要。
比如:用戶(hù)搜索“關(guān)鍵詞1”,那么搜索引擎只需要找到“關(guān)鍵詞1”,就可以會(huì)直接找到“網(wǎng)頁(yè)1,網(wǎng)頁(yè)2,網(wǎng)頁(yè)5,……網(wǎng)頁(yè)L”。
用戶(hù)搜索“關(guān)鍵詞1+關(guān)鍵詞2”,那么搜索引擎需要找到“網(wǎng)頁(yè)1,網(wǎng)頁(yè)2,網(wǎng)頁(yè)5,……網(wǎng)頁(yè)L”,“網(wǎng)頁(yè)3,網(wǎng)頁(yè)4,網(wǎng)頁(yè)5,……網(wǎng)頁(yè)M”,找到同時(shí)出現(xiàn)的“網(wǎng)頁(yè)3、網(wǎng)頁(yè)5,……”。這樣就大大加快了呈現(xiàn)排名的速度。
把“文件-關(guān)鍵詞”這種結(jié)構(gòu)顛倒一下,“關(guān)鍵詞-文件”,就是倒排索引名字的由來(lái)。
更進(jìn)一步,倒排索引中不僅僅記錄了包含網(wǎng)頁(yè)的ID,還會(huì)記錄關(guān)鍵詞出現(xiàn)的頻率(term frequency)、每個(gè)關(guān)鍵詞對(duì)應(yīng)的文檔頻率(inverse document frequency),以及關(guān)鍵詞出現(xiàn)在文件中的位置等信息,這些信息可以直接用在搜索結(jié)果排序上。
四、搜索結(jié)果排序
至此,我們通過(guò)爬蟲(chóng)實(shí)現(xiàn)了信息獲取、通過(guò)倒排索引實(shí)現(xiàn)了信息處理,接下來(lái)就是如何把這些信息展示給用戶(hù),其中最關(guān)鍵的是如何排序。
對(duì)電商而言,用戶(hù)可以選擇按照銷(xiāo)量、信用、價(jià)格甚至綜合排序,當(dāng)然, 排序中也會(huì)穿插一些推廣。
對(duì)通用的搜索引擎而言,比如:百度,沒(méi)有銷(xiāo)量、評(píng)分這些選項(xiàng),主要根據(jù)網(wǎng)頁(yè)與搜索關(guān)鍵詞的相關(guān)性、網(wǎng)頁(yè)質(zhì)量等排序。
TF-IDF模型
如何確定網(wǎng)頁(yè)與關(guān)鍵詞的到底有多大的相關(guān)性?
如果一個(gè)網(wǎng)頁(yè)中關(guān)鍵詞的出現(xiàn)很多次的話(huà),我們通常會(huì)認(rèn)為這個(gè)網(wǎng)頁(yè)與搜索的關(guān)鍵詞更匹配,搜索結(jié)果應(yīng)該更靠前。
我們用詞頻(Term Frequency, TF)表示關(guān)鍵詞在一篇文章中出現(xiàn)的頻率,代表網(wǎng)頁(yè)和關(guān)鍵詞的匹配程度。
比如:我們?cè)诎俣鹊人阉饕嫔纤阉鳌爱a(chǎn)品經(jīng)理的工作”,關(guān)鍵詞為“產(chǎn)品經(jīng)理”,“工作”,“的”作為停用詞,不出現(xiàn)在關(guān)鍵詞中。
在某一個(gè)網(wǎng)頁(yè)上,總共有1000個(gè)詞,其中“產(chǎn)品經(jīng)理”出現(xiàn)了5次,“工作”出現(xiàn)了10次,“產(chǎn)品經(jīng)理”的詞頻就是0.005,“工作”的詞頻就是0.01,兩者相加,0.015就是這個(gè)網(wǎng)頁(yè)和“產(chǎn)品經(jīng)理的工作”的詞頻。
這里有一個(gè)問(wèn)題,相較“產(chǎn)品經(jīng)理”,“工作” 這個(gè)詞用的更多,在所有的網(wǎng)頁(yè)中出現(xiàn)的概率也很高。搜索者可能希望查找產(chǎn)品經(jīng)理相關(guān)的信息,按照TF排序,一些出現(xiàn)很多次“工作”這個(gè)關(guān)鍵字的網(wǎng)站,就可能排在前面,比如:《程序員的工作》、《老板的工作》等等,逆文本頻率 (Inverse Document Frequency,IDF)應(yīng)運(yùn)而生。
文件頻率(Document Frequency)可以理解為關(guān)鍵詞在所有網(wǎng)頁(yè)中出現(xiàn)的頻率,如果一個(gè)關(guān)鍵詞在很多網(wǎng)頁(yè)中都出現(xiàn)過(guò),那么它的文件頻率就很高。反之亦然,比如:“工作”的DF就高于“產(chǎn)品經(jīng)理”。
文件頻率越高,這個(gè)詞就越通用,有效的信息就越少,重要性應(yīng)該更低。于是,我們把文件頻率取個(gè)倒數(shù),就形成了逆文本頻率。
二八定律在這里同樣適用,20%的常用詞占用了80%的篇幅,大多數(shù)關(guān)鍵詞出現(xiàn)的頻率都很低,這就造成了文件頻率很小,而逆文本頻率很大,不便于處理。于是我們?nèi)?duì)數(shù),便于計(jì)算(當(dāng)然,這里也有其他數(shù)學(xué)和信息論上的考慮)。
把詞頻(TF)、逆文檔頻率 (IDF)相乘,就是大名鼎鼎的TF-IDF模型了。
一個(gè)關(guān)鍵詞在一個(gè)網(wǎng)頁(yè)中出現(xiàn)的頻率越高,這個(gè)關(guān)鍵詞越重要,排名越靠前;在所有網(wǎng)頁(yè)中出現(xiàn)的頻率越高,這個(gè)關(guān)鍵詞告訴我們的信息越少,排名應(yīng)該更靠后。
TF-IDF模型幫助我們解決了關(guān)鍵詞與網(wǎng)頁(yè)相關(guān)性的計(jì)算,僅僅使用TF-IDF模型,也可以搭建出效果不錯(cuò)的搜索引擎。
當(dāng)然,商用搜索引擎在TF-IDF的基礎(chǔ)上,進(jìn)行的一定的改進(jìn),比如:出現(xiàn)在文章開(kāi)頭和結(jié)尾的關(guān)鍵詞更加重要,會(huì)根據(jù)詞出現(xiàn)的位置調(diào)整相關(guān)度。但還是基于TF-IDF模型的調(diào)整。
大名鼎鼎的PageRank
搜索結(jié)果排序,僅僅考慮相關(guān)性,搜索的結(jié)果并不是很好??傆心承┚W(wǎng)頁(yè)來(lái)回地倒騰某些關(guān)鍵詞,使自己的搜索排名靠前(當(dāng)然,部分原因也來(lái)自某些搜索引擎更加喜歡推薦自家的東西,這個(gè)就不屬于技術(shù)問(wèn)題了)。
引入網(wǎng)頁(yè)質(zhì)量,可以解決這個(gè)問(wèn)題。排序的時(shí)候,不僅僅考慮相關(guān)性,還要考慮網(wǎng)頁(yè)質(zhì)量的高低,把質(zhì)量高的網(wǎng)頁(yè)放在前面,質(zhì)量低的放在后面。
那么,如何判斷網(wǎng)頁(yè)質(zhì)量呢?
解決這個(gè)問(wèn)題的是兩位Google的創(chuàng)始人。搜索引擎誕生之初,還是美國(guó)斯坦福大學(xué)研究生的佩奇 (Larry Page) 和布林 (Sergey Brin) 開(kāi)始了對(duì)網(wǎng)頁(yè)排序問(wèn)題的研究。
他們的借鑒了學(xué)術(shù)界評(píng)判學(xué)術(shù)論文重要性的通用方法,看論文的引用次數(shù),引用的次數(shù)越高,論文的質(zhì)量也就越高。他們想到網(wǎng)頁(yè)的重要性也可以根據(jù)這種方法來(lái)評(píng)價(jià)。
佩奇和布林使用PageRank值表示每個(gè)網(wǎng)頁(yè)的質(zhì)量,其核心思想其實(shí)非常簡(jiǎn)單,只有兩條:
- 如果一個(gè)網(wǎng)頁(yè)有越多的鏈接指向它,說(shuō)明這個(gè)網(wǎng)頁(yè)質(zhì)量越高,PageRank值越高,排名應(yīng)該越靠前;
- 排名靠前的網(wǎng)頁(yè)應(yīng)該有更大的表決權(quán),當(dāng)一個(gè)網(wǎng)頁(yè)被排名靠前的網(wǎng)頁(yè)鏈接時(shí),PageRank值也越高,排名也更靠前。
我們做一個(gè)類(lèi)比:
- 有一個(gè)程序員,如果公司的人都夸他編程技術(shù)高,那么我們認(rèn)為他編程技術(shù)高;
- 如果他被公司的CTO賞識(shí),我們基本可以確定他的編程水平確實(shí)牛。
比如:下面這張圖(專(zhuān)業(yè)術(shù)語(yǔ)叫做拓?fù)鋱D),每一個(gè)節(jié)點(diǎn)都是一個(gè)網(wǎng)頁(yè),每條線(xiàn)都是兩個(gè)網(wǎng)站之間的鏈接。
鏈接越多,說(shuō)明網(wǎng)站質(zhì)量越高,相應(yīng)的PageRank值就越高。
這里有個(gè)問(wèn)題:“當(dāng)一個(gè)網(wǎng)頁(yè)被排名靠前的網(wǎng)頁(yè)鏈接時(shí),其排名也應(yīng)靠前”,一個(gè)網(wǎng)頁(yè)的排名的過(guò)程需要用到排名的結(jié)果,這就變成了“先有雞還是先有蛋”的問(wèn)題了。
Google的兩位創(chuàng)始人用數(shù)學(xué)解決了這個(gè)問(wèn)題:
最開(kāi)始的時(shí)候,假設(shè)搜索的網(wǎng)頁(yè)具有相同的PageRank值;根據(jù)初始值,開(kāi)始第一輪的計(jì)算,按照鏈接數(shù)量和每個(gè)網(wǎng)頁(yè)的PageRank值重新計(jì)算每一個(gè)網(wǎng)頁(yè)的PageRank值;按照上一輪的結(jié)果,按照鏈接數(shù)量和每個(gè)網(wǎng)頁(yè)的PageRank值重新計(jì)算每一個(gè)網(wǎng)頁(yè)的PageRank值……
這樣計(jì)算下去,直至每個(gè)網(wǎng)頁(yè)的PageRank值基本穩(wěn)定。
你可能會(huì)好奇,這樣要計(jì)算多少次?
佩奇在論文中指出:對(duì)網(wǎng)絡(luò)中的3.22億個(gè)鏈接進(jìn)行遞歸計(jì)算,發(fā)現(xiàn)進(jìn)行52次計(jì)算后可獲得收斂穩(wěn)定的PageRank值。
當(dāng)然,PageRank實(shí)際運(yùn)行起來(lái)比這個(gè)更加復(fù)雜,上億個(gè)網(wǎng)頁(yè)的PageRank值計(jì)算量非常大,一個(gè)服務(wù)器根本無(wú)法完成,需要多臺(tái)服務(wù)器實(shí)現(xiàn)分布式計(jì)算了。為此,Google甚至開(kāi)發(fā)出了并行計(jì)算工具M(jìn)apReduce來(lái)實(shí)現(xiàn)PageRank的計(jì)算!
除了巨大的計(jì)算量,PageRank同樣要面對(duì)作弊的問(wèn)題。
開(kāi)頭我們談到TF-DIF的弊端的時(shí)候講到:總有某些網(wǎng)頁(yè)來(lái)回地倒騰某些關(guān)鍵詞,使自己的搜索排名靠前。
同樣的,針對(duì)PageRank,也總有些網(wǎng)頁(yè)來(lái)回地倒騰鏈接,使自己的搜索排名靠前。這就需要更多的算法,來(lái)識(shí)別這些“作弊”行為,我們?cè)谒阉饕娣醋鞅滓还?jié)再來(lái)細(xì)講。
其他排序方式
至此,使用TF-IDF計(jì)算網(wǎng)頁(yè)與搜索內(nèi)容的相關(guān)性,使用PageRank計(jì)算網(wǎng)頁(yè)質(zhì)量,可以很好地實(shí)現(xiàn)網(wǎng)頁(yè)排序,一個(gè)基本的搜索引擎就搭建完成了。
商用搜索引擎在此基礎(chǔ)上,還衍生了出其他的排名方式。
競(jìng)價(jià)排名:
比較著名的是百度推出的競(jìng)價(jià)排名(其實(shí)最開(kāi)始做競(jìng)價(jià)排名的不是百度,但百度做得太“成功”,也至于大家都認(rèn)為是百度發(fā)明了競(jìng)價(jià)排名),競(jìng)價(jià)排名按照按網(wǎng)站出價(jià)高低決定排名先后。
這種排名方式最大的優(yōu)點(diǎn)是:可以幫助搜索引擎公司盈利。
最大的弊端是:無(wú)法保證出價(jià)高的網(wǎng)頁(yè)的質(zhì)量高,在醫(yī)療等特殊領(lǐng)域,有時(shí)甚至相反。
隨著用戶(hù)數(shù)據(jù)的積累,關(guān)鍵詞和對(duì)應(yīng)用戶(hù)點(diǎn)擊網(wǎng)頁(yè)的行為數(shù)據(jù)也被搜索引擎記錄下來(lái)了,搜索引擎可以根據(jù)用戶(hù)的操作,不斷改進(jìn)自己的引擎。
時(shí)至今日,商用搜索引擎的底層技術(shù)都差不了太多,用戶(hù)數(shù)據(jù)記錄成為了競(jìng)爭(zhēng)的關(guān)鍵因素,這也是百度得以在國(guó)內(nèi)的搜索引擎市場(chǎng)獨(dú)占鰲頭的重要原因——用戶(hù)越多,搜索越準(zhǔn)確,搜索越準(zhǔn)確,用戶(hù)越多!
站內(nèi)搜索:
百度、Google等通用搜索引擎要做很多工作,相比之下,站內(nèi)搜索就簡(jiǎn)單很多——數(shù)據(jù)量少、也基本都是整理過(guò)的結(jié)構(gòu)化數(shù)據(jù),比如:豆瓣讀書(shū),搜索的時(shí)候直接檢索自己的數(shù)據(jù)庫(kù)就可以了。
雖然站內(nèi)搜索的技術(shù)與通用搜索引擎有很多不一樣的地方,但構(gòu)建索引、相關(guān)性計(jì)算、質(zhì)量計(jì)算、排序等流程基本一致。對(duì)于站內(nèi)搜索的需求,同樣存在開(kāi)源的解決方案。
業(yè)界兩個(gè)最流行的開(kāi)源搜索引擎——Solr和ElasticSearch,它們運(yùn)行速度快、效果好、可靠性高、可擴(kuò)展,最關(guān)鍵的是免費(fèi),足以滿(mǎn)足一般的商業(yè)需求。
對(duì)大多數(shù)公司而言,直接使用開(kāi)源搜索引擎就可以了,不用重新造輪子,甚至,這些開(kāi)源的解決方案比自己從頭搭建的還更加穩(wěn)定可靠。
五、 SEO與搜索引擎反作弊
SEO
搜索引擎結(jié)果排名影響流量,流量影響利潤(rùn),有利潤(rùn)的地方就有“商機(jī)”,SEO就是針對(duì)搜索引擎排名的“商機(jī)”。
SEO(Search Engine Optimization)中文為搜索引擎優(yōu)化——即利用搜索引擎的規(guī)則提高網(wǎng)站在搜索結(jié)果的排名。
SEO優(yōu)化通常有兩種方式:一種是網(wǎng)站內(nèi)部?jī)?yōu)化,一種是外部?jī)?yōu)化。
內(nèi)部?jī)?yōu)化主要是優(yōu)化網(wǎng)頁(yè)內(nèi)容,比如:提高關(guān)鍵詞的數(shù)量,優(yōu)化網(wǎng)頁(yè)內(nèi)部標(biāo)簽等。更有甚者,一些網(wǎng)頁(yè)會(huì)使用非常小的字重復(fù)關(guān)鍵詞,或者使用跟背景相同的顏色重復(fù)一些高流量詞語(yǔ),以實(shí)現(xiàn)較高的排名。
外部?jī)?yōu)化主要優(yōu)化鏈接,比如:添加友情鏈接、論壇、貼吧、知道、百科等,這就產(chǎn)生了買(mǎi)賣(mài)鏈接的生意。
可以看出:SEO的優(yōu)化基本針對(duì)的就是TF-IDF和PageRank的排序方式,“投其所好”提高自己的排名。
搜索引擎反作弊
從用戶(hù)的角度講:高質(zhì)量的、相關(guān)的信息才是真正需要的。
一些網(wǎng)頁(yè)憑借SEO優(yōu)化獲得較高排名,本身可能質(zhì)量不高、相關(guān)性也比較弱,這對(duì)那些老老實(shí)實(shí)提供優(yōu)質(zhì)內(nèi)容的網(wǎng)站也是不公平的。
長(zhǎng)此以往,可能就會(huì)產(chǎn)生“劣幣驅(qū)逐良幣”,搜索引擎搜索到的優(yōu)質(zhì)內(nèi)容不斷減少。
從這個(gè)角度看,SEO就是針對(duì)搜索引擎的作弊,搜索引擎公司也不希望這樣的事情發(fā)生——搜索不到需要的信息,用戶(hù)也許直接就跑了!
Google誕生初期,就一直面對(duì)作弊與反作弊的問(wèn)題。
在2001年,敏感的站主和SEO優(yōu)化者發(fā)現(xiàn):有些網(wǎng)站的Google排名一夜之間就一落千里,有的網(wǎng)站排名則大幅上升,這個(gè)現(xiàn)象幾乎是每月一次。
后來(lái),人們才知道,Google定期地更新它的反作弊算法,提高搜索質(zhì)量,這給人的感覺(jué)就像跳舞一樣,因此被SEO稱(chēng)為Google Dance。
那么,Google是如何反作弊的呢?
雖然各種作弊行為的方式各不相同,但目標(biāo)一致,都是為了獲得更高的排名,大體上還是有一定規(guī)律的。根據(jù)這些規(guī)律,搜索引擎常用的反作弊方式有兩類(lèi):根據(jù)作弊特征的主動(dòng)出擊,建立“黑白名單”的被動(dòng)防御。
首先,搜索引擎會(huì)根據(jù)作弊網(wǎng)站的特征主動(dòng)出擊。
就像我們總是能從人群中一眼看到長(zhǎng)得最特殊的人一樣,一個(gè)出現(xiàn)大量重復(fù)關(guān)鍵詞網(wǎng)頁(yè)、一個(gè)出現(xiàn)大量鏈接的網(wǎng)頁(yè)和一個(gè)普通的網(wǎng)頁(yè),在搜索引擎看來(lái)是很不一樣的。
通過(guò)計(jì)算網(wǎng)頁(yè)的關(guān)鍵詞數(shù)量特征、鏈接數(shù)量特征,可以很快發(fā)現(xiàn)那些“出格”的網(wǎng)站,搜索引擎就可以憑此調(diào)整排名。(前文所述的Google Dance就是根據(jù)作弊網(wǎng)站鏈接異常實(shí)現(xiàn)反作弊的。)
其次,搜索引擎也會(huì)建立“黑白名單”,作為防御手段。
搜索引擎會(huì)根據(jù)網(wǎng)站內(nèi)容的質(zhì)量、品牌、權(quán)威程度等信息建立一個(gè)白名單,比如:政府網(wǎng)站、一些大公司網(wǎng)站就在白名單中,這些網(wǎng)站的質(zhì)量較高,排名也靠前,白名單鏈接的網(wǎng)站質(zhì)量一般也會(huì)較高。
與之對(duì)應(yīng)的是黑名單,主要包括那些作弊嚴(yán)重的網(wǎng)站——比如:堆疊關(guān)鍵詞、買(mǎi)賣(mài)鏈接的網(wǎng)站。如果同一個(gè)網(wǎng)站鏈向了多個(gè)黑名單中的網(wǎng)站,就可以把其認(rèn)定為作弊的網(wǎng)站,降低排名。
貓鼠游戲
《貓鼠游戲》夢(mèng)工廠(chǎng)出品的一部電影,根據(jù)真實(shí)經(jīng)歷改編,講述了FBI探員與擅長(zhǎng)偽造文件的罪犯之間進(jìn)行一場(chǎng)場(chǎng)貓抓老鼠的故事。在搜索引擎中,也同樣存在這樣的貓鼠游戲。
- 為什么電商網(wǎng)站商品名稱(chēng)這么長(zhǎng)?
- 為什么會(huì)好評(píng)返現(xiàn)?差評(píng)有償刪除?
- 為什么有些評(píng)價(jià)很高的賓館/餐廳,實(shí)際卻臟亂差?
- 為什么電影評(píng)價(jià)網(wǎng)站經(jīng)常會(huì)因?yàn)樗⒑迷u(píng)/差評(píng)進(jìn)入輿論中心?
- 為什么微博等社交媒體會(huì)有令人咂舌的閱讀、點(diǎn)贊和轉(zhuǎn)發(fā)數(shù)量?
網(wǎng)站和商品本身的相關(guān)性和質(zhì)量很難客觀(guān)量化,根據(jù)關(guān)鍵詞、銷(xiāo)量、評(píng)價(jià)、點(diǎn)擊、閱讀量等較為客觀(guān)的指標(biāo)生成排序結(jié)果,甚至決定是否進(jìn)入熱搜榜、熱銷(xiāo)榜,仍然是當(dāng)前搜索引擎的工作原理。
搜索引擎面對(duì)這些行為,也不斷進(jìn)化出新的應(yīng)對(duì)策略。
面對(duì)刷單行為,平臺(tái)經(jīng)歷了睜一只眼閉一只眼的無(wú)可奈何,到物流追蹤、下單用戶(hù)身份判斷的演變,刷單成本也隨之急劇上升,刷單行為雖然沒(méi)有被杜絕,但也大幅下降。
面對(duì)閱讀量、點(diǎn)擊造假等方式,社交媒體也經(jīng)歷著從聽(tīng)之任之到屏蔽刷排名的轉(zhuǎn)變,中間雖然有收入的降低、用戶(hù)活躍度下降、大V流失的風(fēng)險(xiǎn),但也終究要踏上這一步。
但,這場(chǎng)作弊與反作弊的貓鼠游戲,并沒(méi)有終點(diǎn)。
本文由@linghu 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash, 基于CC0協(xié)議
《數(shù)學(xué)之美》精簡(jiǎn)版
很棒的文章
為什么這么高的閱讀量只有幾條評(píng)論?莫非這篇文章也用了優(yōu)化的手段來(lái)上首頁(yè)?
對(duì)于垂直搜索引擎而言,除了通用搜索引擎的快速、精準(zhǔn)、穩(wěn)定三個(gè)標(biāo)準(zhǔn)外,還需要保證專(zhuān)業(yè)和實(shí)用兩個(gè)核心指標(biāo)。數(shù)據(jù)的深度、廣度、精度、新鮮度、長(zhǎng)度為專(zhuān)業(yè)和實(shí)用提供了基礎(chǔ)支撐,業(yè)務(wù)的理解和數(shù)據(jù)的應(yīng)用決定了專(zhuān)業(yè)和實(shí)用的最終效果。
感謝分享
學(xué)習(xí)了,謝謝
知其然,知其所以然 謝謝分享! 繼續(xù)去墨刀畫(huà)原型加油^0^~
好文
有意思
做過(guò)seo,這個(gè)還是有必要的
做seo出身
作為產(chǎn)品,只需要出搜索框,歷史搜索,熱門(mén)搜索,搜索結(jié)果樣式就行吧,求大神指點(diǎn)為什么要知道這些
知其然而不知其所以然很容易停留在執(zhí)行層面
是的
好
好
感謝
通俗易懂,化繁為簡(jiǎn)
很佩服能把復(fù)雜原理通過(guò)語(yǔ)言描述后能使得技術(shù)小白看懂的作者!
??
??
作者寫(xiě)的很好,非常感謝分享哦、
谷歌會(huì)對(duì)每個(gè)引用打分,如A有10個(gè)人推薦,其中一個(gè)是權(quán)威(分?jǐn)?shù)1),搜索權(quán)重:9個(gè)普通人*0.2分+1個(gè)權(quán)威人士*1=2.8,比11個(gè)普通人推薦的權(quán)重高