(SEO實戰密碼 電子工業出版社 2011年1月出版)
作者信息:
昝輝,網名Zac,1992年畢業於北京航空航天大學電子工程系,1995年北京電影學院碩士研究生畢業。1997來到新加坡在後期制作公司擔任編輯和項目經理等職務。Zac於2006年開始寫中文博客《SEO每天一貼》。幾個月內《SEO每天一貼》成為中國SEO領域被引用最多,最受歡迎的行業博客之一,很多文章在網上廣為流傳。
注明:本文由電子工業出版社授權站長之家連載,未經授權請勿轉載。文章內容節選自《SEO實戰密碼》第二章節。
搜索引擎工作過程非常復雜,接下來的幾節我們簡單介紹搜索引擎是怎樣實現網頁排名的。這裡介紹的內容相對於真正的搜索引擎技術來說只是皮毛,不過對SEO人員已經足夠用了。
搜索引擎的工作過程大體上可以分成三個階段。
(1)爬行和抓取:搜索引擎蜘蛛通過跟蹤鏈接訪問網頁,獲得頁面HTML代碼存入數據庫。
(2)預處理:索引程序對抓取來的頁面數據進行文字提取、中文分詞、索引等處理,以備排名程序調用。
(3)排名:用戶輸入關鍵詞後,排名程序調用索引庫數據,計算相關性,然後按一定格式生成搜索結果頁面。
爬行和抓取
爬行和抓取是搜索引擎工作的第一步,完成數據收集的任務。
1.蜘蛛
搜索引擎用來爬行和訪問頁面的程序被稱為蜘蛛(spider),也稱為機器人(bot)。
搜索引擎蜘蛛訪問網站頁面時類似於普通用戶使用的浏覽器。蜘蛛程序發出頁面訪問請求後,服務器返回HTML代碼,蜘蛛程序把收到的代碼存入原始頁面數據庫。搜索引擎為了提高爬行和抓取速度,都使用多個蜘蛛並發分布爬行。
蜘蛛訪問任何一個網站時,都會先訪問網站根目錄下的robots.txt文件。如果robots.txt文件禁止搜索引擎抓取某些文件或目錄,蜘蛛將遵守協議,不抓取被禁止的網址。
和浏覽器一樣,搜索引擎蜘蛛也有標明自己身份的代理名稱,站長可以在日志文件中看到搜索引擎的特定代理名稱,從而辨識搜索引擎蜘蛛。下面列出常見的搜索引擎蜘蛛名稱:
· Baiduspider+(+http://www.baidu.com/search/spider.htm) 百度蜘蛛
· Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html) 雅虎中國蜘蛛
· Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp) 英文雅虎蜘蛛
· Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Google蜘蛛
· msnbot/1.1 (+http://search.msn.com/msnbot.htm) 微軟 Bing蜘蛛
· Sogou+web+robot+(+http://www.sogou.com/docs/help/webmasters.htm#07)搜狗蜘蛛
· Sosospider+(+http://help.soso.com/webspider.htm) 搜搜蜘蛛
· Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/; ) 有道蜘蛛
2.跟蹤鏈接
為了抓取網上盡量多的頁面,搜索引擎蜘蛛會跟蹤頁面上的鏈接,從一個頁面爬到下一個頁面,就好像蜘蛛在蜘蛛網上爬行那樣,這也就是搜索引擎蜘蛛這個名稱的由來。
整個互聯網是由相互鏈接的網站及頁面組成的。從理論上說,蜘蛛從任何一個頁面出發,順著鏈接都可以爬行到網上的所有頁面。當然,由於網站及頁面鏈接結構異常復雜,蜘蛛需要采取一定的爬行策略才能遍歷網上所有頁面。
最簡單的爬行遍歷策略分為兩種,一種是深度優先,另一種是廣度優先。
所謂深度優先,指的是蜘蛛沿著發現的鏈接一直向前爬行,直到前面再也沒有其他鏈接,然後返回到第一個頁面,沿著另一個鏈接再一直往前爬行。
如圖2-20所示,蜘蛛跟蹤鏈接,從A頁面爬行到A1,A2,A3,A4,到A4頁面後,已經沒有其他鏈接可以跟蹤就返回A頁面,順著頁面上的另一個鏈接,爬行到B1,B2,B3,B4。在深度優先策略中,蜘蛛一直爬到無法再向前,才返回爬另一條線。
廣度優先是指蜘蛛在一個頁面上發現多個鏈接時,不是順著一個鏈接一直向前,而是把頁面上所有第一層鏈接都爬一遍,然後再沿著第二層頁面上發現的鏈接爬向第三層頁面。
如圖2-21所示,蜘蛛從A頁面順著鏈接爬行到A1,B1,C1頁面,直到A頁面上的所有鏈接都爬行完,然後再從A1頁面發現的下一層鏈接,爬行到A2,A3,A4,……頁面。
圖2-20 深度優先遍歷策略
圖2-21 廣度優先遍歷策略
從理論上說,無論是深度優先還是廣度優先,只要給蜘蛛足夠的時間,都能爬完整個互聯網。在實際工作中,蜘蛛的帶寬資源、時間都不是無限的,也不可能爬完所有頁面。實際上最大的搜索引擎也只是爬行和收錄了互聯網的一小部分。
深度優先和廣度優先通常是混合使用的,這樣既可以照顧到盡量多的網站(廣度優先),也能照顧到一部分網站的內頁(深度優先)。
3.吸引蜘蛛
由此可見,雖然理論上蜘蛛能爬行和抓取所有頁面,但實際上不能、也不會這麼做。SEO人員要想讓自己的更多頁面被收錄,就要想方設法吸引蜘蛛來抓取。既然不能抓取所有頁面,蜘蛛所要做的就是盡量抓取重要頁面。哪些頁面被認為比較重要呢?有幾方面影響因素。
1、網站和頁面權重。質量高、資格老的網站被認為權重比較高,這種網站上的頁面被爬行的深度也會比較高,所以會有更多內頁被收錄。
2、頁面更新度。蜘蛛每次爬行都會把頁面數據存儲起來。如果第二次爬行發現頁面與第一次收錄的完全一樣,說明頁面沒有更新,蜘蛛也就沒有必要經常抓取。如果頁面內容經常更新,蜘蛛就會更加頻繁地訪問這種頁面,頁面上出現的新鏈接,也自然會被蜘蛛更快地跟蹤,抓取新頁面。
3、導入鏈接。無論是外部鏈接還是同一個網站的內部鏈接,要被蜘蛛抓取,就必須有導入鏈接進入頁面,否則蜘蛛根本沒有機會知道頁面的存在。高質量的導入鏈接也經常使頁面上的導出鏈接被爬行深度增加。
4、與首頁點擊距離。一般來說網站上權重最高的是首頁,大部分外部鏈接是指向首頁的,蜘蛛訪問最頻繁的也是首頁。離首頁點擊距離越近,頁面權重越高,被蜘蛛爬行的機會也越大。
4.地址庫
為了避免重復爬行和抓取網址,搜索引擎會建立一個地址庫,記錄已經被發現還沒有抓取的頁面,以及已經被抓取的頁面。
地址庫中的URL有幾個來源:
(1)人工錄入的種子網站。
(2)蜘蛛抓取頁面後,從HTML中解析出新的鏈接URL,與地址庫中的數據進行對比,如果是地址庫中沒有的網址,就存入待訪問地址庫。
(3)站長通過搜索引擎網頁提交表格提交進來的網址。
蜘蛛按重要性從待訪問地址庫中提取URL,訪問並抓取頁面,然後把這個URL從待訪問地址庫中刪除,放進已訪問地址庫中。
大部分主流搜索引擎都提供一個表格,讓站長提交網址。不過這些提交來的網址都只是存入地址庫而已,是否收錄還要看頁面重要性如何。搜索引擎所收錄的絕大部分頁面是蜘蛛自己跟蹤鏈接得到的。可以說提交頁面基本上是毫無用處的,搜索引擎更喜歡自己沿著鏈接發現新頁面。
5.文件存儲
搜索引擎蜘蛛抓取的數據存入原始頁面數據庫。其中的頁面數據與用戶浏覽器得到的HTML是完全一樣的。每個URL都有一個獨特的文件編號。
6.爬行時的復制內容檢測
檢測並刪除復制內容通常是在下面介紹的預處理過程中進行的,但現在的蜘蛛在爬行和抓取文件時也會進行一定程度的復制內容檢測。遇到權重很低的網站上大量轉載或抄襲內容時,很可能不再繼續爬行。這也就是有的站長在日志文件中發現了蜘蛛,但頁面從來沒有被真正收錄過的原因。
2 預處理
在一些SEO材料中,“預處理”也被簡稱為“索引”,因為索引是預處理最主要的步驟。
搜索引擎蜘蛛抓取的原始頁面,並不能直接用於查詢排名處理。搜索引擎數據庫中的頁面數都在數萬億級別以上,用戶輸入搜索詞後,靠排名程序實時對這麼多頁面分析相關性,計算量太大,不可能在一兩秒內返回排名結果。因此抓取來的頁面必須經過預處理,為最後的查詢排名做好准備。
和爬行抓取一樣,預處理也是在後台提前完成的,用戶搜索時感覺不到這個過程。
1.提取文字
現在的搜索引擎還是以文字內容為基礎。蜘蛛抓取到的頁面中的HTML代碼,除了用戶在浏覽器上可以看到的可見文字外,還包含了大量的HTML格式標簽、JavaScript程序等無法用於排名的內容。搜索引擎預處理首先要做的就是從HTML文件中去除標簽、程序,提取出可以用於排名處理的網頁面文字內容。
比如下面這段HTML代碼:
<div id="post-1100" class="post-1100 post hentry category-seo">
<div class="posttitle">
<h2><a href今天愚人節哈">今天愚人節哈</a></h2>="http://www.chinamyhosting.com/seoblog/
除去HTML代碼後,剩下的用於排名的文字只是這一行:
今天愚人節哈
除了可見文字,搜索引擎也會提取出一些特殊的包含文字信息的代碼,如Meta標簽中的文字、圖片替代文字、Flash文件的替代文字、鏈接錨文字等。
2.中文分詞
分詞是中文搜索引擎特有的步驟。搜索引擎存儲和處理頁面及用戶搜索都是以詞為基礎的。英文等語言單詞與單詞之間有空格分隔,搜索引擎索引程序可以直接把句子劃分為單詞的集合。而中文詞與詞之間沒有任何分隔符,一個句子中的所有字和詞都是連在一起的。搜索引擎必須首先分辨哪幾個字組成一個詞,哪些字本身就是一個詞。比如“減肥方法”將被分詞為“減肥”和“方法”兩個詞。
中文分詞方法基本上有兩種,一種是基於詞典匹配,另一種是基於統計。
基於詞典匹配的方法是指,將待分析的一段漢字與一個事先造好的詞典中的詞條進行匹配,在待分析漢字串中掃描到詞典中已有的詞條則匹配成功,或者說切分出一個單詞。
按照掃描方向,基於詞典的匹配法可以分為正向匹配和逆向匹配。按照匹配長度優先級的不同,又可以分為最大匹配和最小匹配。將掃描方向和長度優先混合,又可以產生正向最大匹配、逆向最大匹配等不同方法。
詞典匹配方法計算簡單,其准確度在很大程度上取決於詞典的完整性和更新情況。
基於統計的分詞方法指的是分析大量文字樣本,計算出字與字相鄰出現的統計概率,幾個字相鄰出現越多,就越可能形成一個單詞。基於統計的方法的優勢是對新出現的詞反應更快速,也有利於消除歧義。
基於詞典匹配和基於統計的分詞方法各有優劣,實際使用中的分詞系統都是混合使用兩種方法的,快速高效,又能識別生詞、新詞,消除歧義。
中文分詞的准確性往往影響搜索引擎排名的相關性。比如在百度搜索“搜索引擎優化”,如圖2-22所示,從快照中可以看到,百度把“搜索引擎優化”這六個字當成一個詞。
圖2-22 百度快照顯示的對“搜索引擎優化”的分詞結果
而在Google搜索同樣的詞,如圖2-23所示,快照顯示Google將其分切為“搜索”、“引擎”和“優化”三個詞。顯然百度切分得更為合理,搜索引擎優化是一個完整的概念。Google分詞時傾向於更為細碎。
圖2-23 Google快照顯示的對“搜索引擎優化”的分詞結果
再舉一個更明顯的例子。在Google搜索“點石互動”四個字,如圖2-24所示,快照顯示Google將其切分為“點”,“石”及“互動”三個詞。“點石互動”這個中文SEO領域最知名的品牌,顯然並沒有進入Google的詞典中。
圖2-24 Google快照顯示的對“點石互動”的分詞結果
在百度搜索“點石互動”時會發現,百度將“點石互動”當做一個詞。甚至在百度搜索“點石大會報名”,可以發現百度把“點石大會”都當成一個詞,如圖2-25所示。
圖2-25 百度快照顯示的對“點石大會報名”的分詞結果
這種分詞上的不同很可能是一些關鍵詞排名在不同搜索引擎有不同表現的原因之一。比如百度更喜歡將搜索詞完整匹配地出現在頁面上,也就是說搜索“點石互動”時,這四個字連續完整出現更容易在百度獲得好的排名。Google就與此不同,不太要求完整匹配。一些頁面出現“點石”和“互動”兩個詞,但不必完整匹配地出現,“點石”出現在前面,“互動”出現在頁面的其他地方,這樣的頁面在Google搜索“點石互動”時,也可以獲得不錯的排名。
搜索引擎對頁面的分詞取決於詞庫的規模、准確性和分詞算法的好壞,而不是取決於頁面本身如何,所以SEO人員對分詞所能做的很少。唯一能做的是在頁面上用某種形式提示搜索引擎,某幾個字應該被當做一個詞處理,尤其是可能產生歧義的時候,比如在頁面標題、h1標簽及黑體中出現關鍵詞。如果頁面是關於“和服”的內容,那麼可以把“和服”這兩個字特意標為黑體。如果頁面是關於“化妝和服裝”,可以把“服裝”兩個字標為黑體。這樣,搜索引擎對頁面進行分析時就知道標為黑體的應該是一個詞。
3.去停止詞
無論是英文還是中文,頁面內容中都會有一些出現頻率很高,卻對內容沒有任何影響的詞,如“的”、“地”、“得”之類的助詞,“啊”、“哈”、“呀”之類的感歎詞,“從而”、“以”、“卻”之類的副詞或介詞。這些詞被稱為停止詞,因為它們對頁面的主要意思沒什麼影響。英文中的常見停止詞有the,a,an,to,of等。
搜索引擎在索引頁面之前會去掉這些停止詞,使索引數據主題更為突出,減少無謂的計算量。
4.消除噪聲
絕大部分頁面上還有一部分內容對頁面主題也沒有什麼貢獻,比如版權聲明文字、導航條、廣告等。以常見的博客導航為例,幾乎每個博客頁面上都會出現文章分類、歷史存檔等導航內容,但是這些頁面本身與“分類”、“歷史”這些詞都沒有任何關系。用戶搜索“歷史”、“分類”這些關鍵詞時僅僅因為頁面上有這些詞出現而返回博客帖子是毫無意義的,完全不相關。所以這些區塊都屬於噪聲,對頁面主題只能起到分散作用。
搜索引擎需要識別並消除這些噪聲,排名時不使用噪聲內容。消噪的基本方法是根據HTML標簽對頁面分塊,區分出頁頭、導航、正文、頁腳、廣告等區域,在網站上大量重復出現的區塊往往屬於噪聲。對頁面進行消噪後,剩下的才是頁面主體內容。
5.去重
搜索引擎還需要對頁面進行去重處理。
同一篇文章經常會重復出現在不同網站及同一個網站的不同網址上,搜索引擎並不喜歡這種重復性的內容。用戶搜索時,如果在前兩頁看到的都是來自不同網站的同一篇文章,用戶體驗就太差了,雖然都是內容相關的。搜索引擎希望只返回相同文章中的一篇,所以在進行索引前還需要識別和刪除重復內容,這個過程就稱為“去重”。
去重的基本方法是對頁面特征關鍵詞計算指紋,也就是說從頁面主體內容中選取最有代表性的一部分關鍵詞(經常是出現頻率最高的關鍵詞),然後計算這些關鍵詞的數字指紋。這裡的關鍵詞選取是在分詞、去停止詞、消噪之後。實驗表明,通常選取10個特征關鍵詞就可以達到比較高的計算准確性,再選取更多詞對去重准確性提高的貢獻也就不大了。
典型的指紋計算方法如MD5算法(信息摘要算法第五版)。這類指紋算法的特點是,輸入(特征關鍵詞)有任何微小的變化,都會導致計算出的指紋有很大差距。
了解了搜索引擎的去重算法,SEO人員就應該知道簡單地增加“的”、“地”、“得”、調換段落順序這種所謂偽原創,並不能逃過搜索引擎的去重算法,因為這樣的操作無法改變文章的特征關鍵詞。而且搜索引擎的去重算法很可能不止於頁面級別,而是進行到段落級別,混合不同文章、交叉調換段落順序也不能使轉載和抄襲變成原創。
6.正向索引
正向索引也可以簡稱為索引。
經過文字提取、分詞、消噪、去重後,搜索引擎得到的就是獨特的、能反映頁面主體內容的、以詞為單位的內容。接下來搜索引擎索引程序就可以提取關鍵詞,按照分詞程序劃分好的詞,把頁面轉換為一個關鍵詞組成的集合,同時記錄每一個關鍵詞在頁面上的出現頻率、出現次數、格式(如出現在標題標簽、黑體、H標簽、錨文字等)、位置(如頁面第一段文字等)。這樣,每一個頁面都可以記錄為一串關鍵詞集合,其中每個關鍵詞的詞頻、格式、位置等權重信息也都記錄在案。
搜索引擎索引程序將頁面及關鍵詞形成詞表結構存儲進索引庫。簡化的索引詞表形式如表2-1所示。
表2-1 簡化的索引詞表結構
每個文件都對應一個文件ID,文件內容被表示為一串關鍵詞的集合。實際上在搜索引擎索引庫中,關鍵詞也已經轉換為關鍵詞ID。這樣的數據結構就稱為正向索引。
7.倒排索引
正向索引還不能直接用於排名。假設用戶搜索關鍵詞2,如果只存在正向索引,排名程序需要掃描所有索引庫中的文件,找出包含關鍵詞2的文件,再進行相關性計算。這樣的計算量無法滿足實時返回排名結果的要求。
所以搜索引擎會將正向索引數據庫重新構造為倒排索引,把文件對應到關鍵詞的映射轉換為關鍵詞到文件的映射,如表2-2所示。
在倒排索引中關鍵詞是主鍵,每個關鍵詞都對應著一系列文件,這些文件中都出現了這個關鍵詞。這樣當用戶搜索某個關鍵詞時,排序程序在倒排索引中定位到這個關鍵詞,就可以馬上找出所有包含這個關鍵詞的文件。
表2-2 倒排索引結構
8.鏈接關系計算
鏈接關系計算也是預處理中很重要的一部分。現在所有的主流搜索引擎排名因素中都包含網頁之間的鏈接流動信息。搜索引擎在抓取頁面內容後,必須事前計算出:頁面上有哪些鏈接指向哪些其他頁面,每個頁面有哪些導入鏈接,鏈接使用了什麼錨文字,這些復雜的鏈接指向關系形成了網站和頁面的鏈接權重。
Google PR值就是這種鏈接關系的最主要體現之一。其他搜索引擎也都進行類似計算,雖然它們並不稱為PR。
由於頁面和鏈接數量巨大,網上的鏈接關系又時時處在更新中,因此鏈接關系及PR的計算要耗費很長時間。關於PR和鏈接分析,後面還有專門的章節介紹。
9.特殊文件處理
除了HTML文件外,搜索引擎通常還能抓取和索引以文字為基礎的多種文件類型,如PDF、Word、WPS、XLS、PPT、TXT文件等。我們在搜索結果中也經常會看到這些文件類型。但目前的搜索引擎還不能處理圖片、視頻、Flash這類非文字內容,也不能執行腳本和程序。
雖然搜索引擎在識別圖片及從Flash中提取文字內容方面有些進步,不過距離直接靠讀取圖片、視頻、Flash內容返回結果的目標還很遠。對圖片、視頻內容的排名還往往是依據與之相關的文字內容,詳細情況可以參考後面的整合搜索部分。
2.4.3 排名
經過搜索引擎蜘蛛抓取頁面,索引程序計算得到倒排索引後,搜索引擎就准備好可以隨時處理用戶搜索了。用戶在搜索框填入關鍵詞後,排名程序調用索引庫數據,計算排名顯示給用戶,排名過程是與用戶直接互動的。
1.搜索詞處理
搜索引擎接收到用戶輸入的搜索詞後,需要對搜索詞做一些處理,才能進入排名過程。搜索詞處理包括如下幾方面。
(1)中文分詞。與頁面索引時一樣,搜索詞也必須進行中文分詞,將查詢字符串轉換為以詞為基礎的關鍵詞組合。分詞原理與頁面分詞相同。
(2)去停止詞。和索引時一樣,搜索引擎也需要把搜索詞中的停止詞去掉,最大限度地提高排名相關性及效率。
(3)指令處理。查詢詞完成分詞後,搜索引擎的默認處理方式是在關鍵詞之間使用“與”邏輯。也就是說用戶搜索“減肥方法”時,程序分詞為“減肥”和“方法”兩個詞,搜索引擎排序時默認認為,用戶尋找的是既包含“減肥”,也包含“方法”的頁面。只包含“減肥”不包含“方法”,或者只包含“方法”不包含“減肥”的頁面,被認為是不符合搜索條件的。當然,這只是極為簡化的為了說明原理的說法,實際上我們還是會看到只包含一部分關鍵詞的搜索結果。
另外用戶輸入的查詢詞還可能包含一些高級搜索指令,如加號、減號等,搜索引擎都需要做出識別和相應處理。有關高級搜索指令,後面還有詳細說明。
(4)拼寫錯誤矯正。用戶如果輸入了明顯錯誤的字或英文單詞拼錯,搜索引擎會提示用戶正確的用字或拼法,如圖2-26所示
。
圖2-26 輸入的錯拼、錯字矯正
(5)整合搜索觸發。某些搜索詞會觸發整合搜索,比如明星姓名就經常觸發圖片和視頻內容,當前的熱門話題又容易觸發資訊內容。哪些詞觸發哪些整合搜索,也需要在搜索詞處理階段計算。
2.文件匹配
搜索詞經過處理後,搜索引擎得到的是以詞為基礎的關鍵詞集合。文件匹配階段就是找出含有所有關鍵詞的文件。在索引部分提到的倒排索引使得文件匹配能夠快速完成,如表2-3所示。
表2-3 倒排索引快速匹配文件
假設用戶搜索“關鍵詞2 關鍵詞7”,排名程序只要在倒排索引中找到“關鍵詞2”和“關鍵詞7”這兩個詞,就能找到分別含有這兩個詞的所有頁面。經過簡單計算就能找出既包含“關鍵詞2”,也包含“關鍵詞7”的所有頁面:文件1和文件6。
3.初始子集的選擇
找到包含所有關鍵詞的匹配文件後,還不能進行相關性計算,因為找到的文件經常會有幾十萬幾百萬,甚至上千萬個。要對這麼多文件實時進行相關性計算,需要的時間還是比較長的。
實際上用戶並不需要知道所有匹配的幾十萬、幾百萬個頁面,絕大部分用戶只會查看前兩頁,也就是前20個結果。搜索引擎也並不需要計算這麼多頁面的相關性,而只要計算最重要的一部分頁面就可以了。常用搜索引擎的人都會注意到,搜索結果頁面通常最多顯示100個。用戶點擊搜索結果頁面底部的“下一頁”鏈接,最多也只能看到第100頁,也就是1000個搜索結果,如圖2-27所示。
百度則通常返回76頁結果,如圖2-28所示。
圖2-27 Google顯示100頁搜索結果
圖2-28 百度顯示76頁搜索結果
所以搜索引擎只需要計算前1000個結果的相關性,就能滿足要求。
但問題在於,還沒有計算相關性時,搜索引擎又怎麼知道哪一千個文件是最相關的?所以用於最後相關性計算的初始頁面子集的選擇,必須依靠其他特征而不是相關性,其中最主要的就是頁面權重。由於所有匹配文件都已經具備了最基本的相關性(這些文件都包含所有查詢關鍵詞),搜索引擎通常會用非相關性的頁面特征選出一個初始子集。初始子集的數目是多少?幾萬個?或許更多,外人並不知道。不過可以肯定的是,當匹配頁面數目巨大時,搜索引擎不會對這麼多頁面進行計算,而必須選出頁面權重較高的一個子集,再對子集中的頁面進行相關性計算。
4.相關性計算
選出初始子集後,對子集中的頁面計算關鍵詞相關性。計算相關性是排名過程中最重要的一步。相關性計算是搜索引擎算法中最令SEO感興趣的部分。
影響相關性的主要因素包括如下幾方面。
(1)關鍵詞常用程度。經過分詞後的多個關鍵詞,對整個搜索字符串的意義貢獻並不相同。越常用的詞對搜索詞的意義貢獻越小,越不常用的詞對搜索詞的意義貢獻越大。舉個例子,假設用戶輸入的搜索詞是“我們冥王星”。“我們”這個詞常用程度非常高,在很多頁面上會出現,它對“我們冥王星”這個搜索詞的辨識程度和意義相關度貢獻就很小。找出那些包含“我們”這個詞的頁面,對搜索排名相關性幾乎沒有什麼影響,有太多頁面包含“我們”這個詞。
而“冥王星”這個詞常用程度就比較低,對“我們冥王星”這個搜索詞的意義貢獻要大得多。那些包含“冥王星”這個詞的頁面,對“我們冥王星”這個搜索詞會更為相關。
常用詞的極致就是停止詞,對頁面意義完全沒有影響。
所以搜索引擎對搜索詞串中的關鍵詞並不是一視同仁地處理,而是根據常用程度進行加權。不常用的詞加權系數高,常用詞加權系數低,排名算法對不常用的詞給予更多關注。
我們假設A、B兩個頁面都各出現“我們”及“冥王星”兩個詞。但是“我們”這個詞在A頁面出現於普通文字中,“冥王星”這個詞在A頁面出現於標題標簽中。B頁面正相反,“我們”出現在標題標簽中,而“冥王星”出現在普通文字中。那麼針對“我們冥王星”這個搜索詞,A頁面將更相關。
(2)詞頻及密度。一般認為在沒有關鍵詞堆積的情況下,搜索詞在頁面中出現的次數多,密度越高,說明頁面與搜索詞越相關。當然這只是一個大致規律,實際情況未必如此,所以相關性計算還有其他因素。出現頻率及密度只是因素的一部分,而且重要程度越來越低。
(3)關鍵詞位置及形式。就像在索引部分中提到的,頁面關鍵詞出現的格式和位置都被記錄在索引庫中。關鍵詞出現在比較重要的位置,如標題標簽、黑體、H1等,說明頁面與關鍵詞越相關。這一部分就是頁面SEO所要解決的。
(4)關鍵詞距離。切分後的關鍵詞完整匹配地出現,說明與搜索詞最相關。比如搜索“減肥方法”時,頁面上連續完整出現“減肥方法”四個字是最相關的。如果“減肥”和“方法”兩個詞沒有連續匹配出現,出現的距離近一些,也被搜索引擎認為相關性稍微大一些。
(5)鏈接分析及頁面權重。除了頁面本身的因素,頁面之間的鏈接和權重關系也影響關鍵詞的相關性,其中最重要的是錨文字。頁面有越多以搜索詞為錨文字的導入鏈接,說明頁面的相關性越強。
鏈接分析還包括了鏈接源頁面本身的主題、錨文字周圍的文字等。
上面簡單介紹的幾個因素在本書中都有更詳細的說明。
5.排名過濾及調整
選出匹配文件子集、計算相關性後,大體排名就已經確定了。之後搜索引擎可能還有一些過濾算法,對排名進行輕微調整,其中最主要的過濾就是施加懲罰。一些有作弊嫌疑的頁面,雖然按照正常的權重和相關性計算排到前面,但搜索引擎的懲罰算法卻可能在最後一步把這些頁面調到後面去。典型的例子是百度的11位,Google的負6、負30、負950等算法。
6.排名顯示
所有排名確定後,排名程序調用原始頁面的標題標簽、說明標簽、快照日期等數據顯示在頁面上。有時搜索引擎需要動態生成頁面摘要,而不是調用頁面本身的說明標簽。
7.搜索緩存
用戶搜索的關鍵詞有很大一部分是重復的。按照2/8定律,20%的搜索詞占到了總搜索次數的80%。按照長尾理論,最常見的搜索詞沒有占到80%那麼多,但通常也有一個比較粗大的頭部,很少一部分搜索詞占到了所有搜索次數的很大一部分。尤其是有熱門新聞發生時,每天可能有幾百萬人搜索完全相同的關鍵詞。
如果每次搜索都重新處理排名可以說是很大的浪費。搜索引擎會把最常見的搜索詞存入緩存,用戶搜索時直接從緩存中調用,而不必經過文件匹配和相關性計算,大大提高了排名效率,縮短了搜索反應時間。
8.查詢及點擊日志
搜索用戶的IP地址、搜索的關鍵詞、搜索時間,以及點擊了哪些結果頁面,搜索引擎都記錄形成日志。這些日志文件中的數據對搜索引擎判斷搜索結果質量、調整搜索算法、預期搜索趨勢等都有重要意義。
上面我們簡單介紹了搜索引擎的工作過程。當然實際搜索引擎的工作步驟與算法是非常復雜的。上面的說明很簡單,但其中有很多技術難點。
搜索引擎還在不斷優化算法,優化數據庫格式。不同搜索引擎的工作步驟也會有差異。但大致上所有主流搜索引擎的基本工作原理都是如此,在過去幾年及可以預期的未來幾年,都不會有實質性的改變。
備注:《SEO實戰密碼》出版社官方網站:http://www.phei.com.cn/