<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          搜索引擎工作原理

          共 12072字,需瀏覽 25分鐘

           ·

          2021-06-16 11:56

          作者:君額上似可跑馬 

          https://segmentfault.com/a/1190000019830311



          搜索引擎的工作過(guò)程大體可以分為三個(gè)階段:

          1.對(duì)網(wǎng)頁(yè)進(jìn)行抓取建庫(kù)

          搜索引擎蜘蛛通過(guò)抓取頁(yè)面上的鏈接訪問(wèn)其他網(wǎng)頁(yè),將獲得的HTML代碼存入數(shù)據(jù)庫(kù)

          2.預(yù)處理

          索引程序?qū)ψト?lái)的頁(yè)面數(shù)據(jù)進(jìn)行文字提取、中文分詞、索引等處理,為后面排名程序使用時(shí)做準(zhǔn)備。

          3.給搜索結(jié)果進(jìn)行排名

          用戶輸入關(guān)鍵詞后,排名程序調(diào)用索引庫(kù)數(shù)據(jù),計(jì)算數(shù)據(jù)和關(guān)鍵詞的相關(guān)性,然后按照一定格式生成搜索結(jié)果頁(yè)面。

          用到了大概三個(gè)程序,蜘蛛、索引程序、排名程序

          對(duì)網(wǎng)頁(yè)進(jìn)行爬行、抓取、建庫(kù)

          如果我們要從一個(gè)頁(yè)面進(jìn)入另一個(gè)頁(yè)面,我們需要在頁(yè)面上點(diǎn)擊這個(gè)超鏈接跳轉(zhuǎn)到新的頁(yè)面,這個(gè)鏈接指向另一個(gè)網(wǎng)頁(yè),相當(dāng)于這個(gè)網(wǎng)頁(yè)的入口

          或者如果我們知道這個(gè)網(wǎng)頁(yè)的url地址,就算我們沒(méi)有在頁(yè)面上看到鏈接到該網(wǎng)頁(yè)的可點(diǎn)擊的超鏈接,也可以通過(guò)在地址欄輸入url地址轉(zhuǎn)到該頁(yè)面

          當(dāng)我們?cè)谝粋€(gè)網(wǎng)站發(fā)布了自己的文章,這篇文章會(huì)產(chǎn)生一個(gè)新的獨(dú)一無(wú)二的url地址,當(dāng)人們點(diǎn)擊這個(gè)地址,它不會(huì)跳轉(zhuǎn)到其他人寫(xiě)的文章頁(yè)面,而是你寫(xiě)的特定的那一篇。

          可以看出,所有頁(yè)面,都會(huì)產(chǎn)生一個(gè)url地址使我們可以訪問(wèn)它。

          整個(gè)互聯(lián)網(wǎng)是由相互鏈接的頁(yè)面組成的,如果一個(gè)網(wǎng)頁(yè),沒(méi)有任何一個(gè)頁(yè)面鏈接它,我們也不知道這個(gè)網(wǎng)頁(yè)的地址,就算這個(gè)頁(yè)面真實(shí)存在,它也會(huì)像一個(gè)孤島一樣,我們無(wú)法訪問(wèn)到這個(gè)頁(yè)面。

          日常生活中我們有多個(gè)搜索引擎可以使用,比如百度、谷歌、搜狗、bing等。

          不同的搜索引擎就算查詢同一個(gè)內(nèi)容返回出來(lái)的結(jié)果都不一樣,這是因?yàn)楦鱾€(gè)公司給內(nèi)容進(jìn)行排序的計(jì)算方式都是不一樣的,哪個(gè)頁(yè)面該排到第一頁(yè)/哪個(gè)網(wǎng)頁(yè)該排到最后一頁(yè)/哪個(gè)網(wǎng)頁(yè)根本就不應(yīng)該展示出來(lái)都是有他們公司自己的評(píng)判標(biāo)準(zhǔn),這些排名算法具體的內(nèi)容基本都不會(huì)對(duì)外公開(kāi),避免被其他公司搜索引擎公司知道,因?yàn)榕琶惴ㄊ敲總€(gè)搜索引擎公司的核心競(jìng)爭(zhēng)力。

          為什么排名算法是每個(gè)搜索引擎公司的核心競(jìng)爭(zhēng)力?

          一般人們都會(huì)看哪個(gè)搜索引擎搜索出來(lái)的結(jié)果更符合TA自己的需求(相關(guān)性更高)就會(huì)選擇長(zhǎng)期使用哪一個(gè)。

          比如,你在搜索輸入框里輸入【空調(diào)】?jī)蓚€(gè)字想查詢關(guān)于空調(diào)的信息,結(jié)果搜索結(jié)果頁(yè)給你返回的內(nèi)容第一頁(yè)竟然是一些電視機(jī)/馬桶/衣柜之類(lèi)的銷(xiāo)售鏈接,這樣相關(guān)性不高的網(wǎng)頁(yè)越多,對(duì)你的使用體驗(yàn)就越差,最好的體驗(yàn)是,你搜索【空調(diào)】后,返回的頁(yè)面里全是關(guān)于空調(diào)的信息,這樣節(jié)約了你獲取信息的時(shí)間成本,使你更方便的獲取想要的資訊。

          而排名算法就是為了讓返回的結(jié)果盡量符合用戶查詢的內(nèi)容的一種算法,他會(huì)對(duì)網(wǎng)頁(yè)進(jìn)行排名,把覺(jué)得對(duì)用戶最有價(jià)值的網(wǎng)頁(yè)排在前面,比如第一頁(yè)第一個(gè),用戶能最快的看到這個(gè)網(wǎng)頁(yè),把相關(guān)性較差不重要的網(wǎng)頁(yè)排在后面。把那些沒(méi)有用的沒(méi)有價(jià)值的頁(yè)面直接不展示出來(lái),經(jīng)過(guò)對(duì)這些網(wǎng)頁(yè)的排序,讓用戶盡量在只看第一頁(yè)的情況下就能找到自己想要的資訊,解決掉自己的問(wèn)題。

          所以搜索引擎公司只要能對(duì)網(wǎng)頁(yè)進(jìn)行合理的排序,帶給用戶最大的方便,讓用戶感覺(jué)到返回的內(nèi)容都很精準(zhǔn),正好是他們想要的內(nèi)容,那么用戶就會(huì)持續(xù)使用這個(gè)搜索引擎,所以如何對(duì)這些網(wǎng)頁(yè)進(jìn)行排序的計(jì)算方式就是每個(gè)搜索引擎公司的公司機(jī)密了。

          爬行和抓取搜索引擎工作的第一步,目的是完成數(shù)據(jù)收集的任務(wù)。

          當(dāng)用戶在搜索框輸入想查詢的內(nèi)容后,所有展示出來(lái)的網(wǎng)頁(yè)都是需要先經(jīng)過(guò)搜索引擎的收集才能展示出來(lái)的,只有收集了,才能通過(guò)分析網(wǎng)頁(yè)中的內(nèi)容,對(duì)這些網(wǎng)頁(yè)的價(jià)值和相關(guān)性進(jìn)行一個(gè)判斷,經(jīng)過(guò)對(duì)網(wǎng)頁(yè)的排序之后再返回給用戶,用戶在搜索結(jié)果頁(yè)上看到的所有網(wǎng)頁(yè),都是已經(jīng)被搜索引擎收集進(jìn)數(shù)據(jù)庫(kù)中的網(wǎng)頁(yè)。

          而那些互聯(lián)網(wǎng)上沒(méi)有被搜索引擎收集到的網(wǎng)頁(yè)(搜索引擎不是什么網(wǎng)頁(yè)都會(huì)放進(jìn)數(shù)據(jù)庫(kù),每個(gè)搜索引擎都有自己的一個(gè)標(biāo)準(zhǔn),就是什么樣的網(wǎng)頁(yè)才會(huì)被收集到數(shù)據(jù)庫(kù)中。就像人類(lèi)吃東西一樣,只吃自己認(rèn)為該吃的食物),就變成了永遠(yuǎn)無(wú)法訪問(wèn)的孤魂野鬼。

          注:網(wǎng)頁(yè)和網(wǎng)站的區(qū)別需要注意,蜘蛛在判斷需不需要收集進(jìn)索引數(shù)據(jù)庫(kù)的是以網(wǎng)頁(yè)為單位的。

          比如整個(gè)淘寶是一個(gè)網(wǎng)站,但是淘寶中某一個(gè)商品的詳情頁(yè)面才算網(wǎng)頁(yè),還比如你現(xiàn)在所看的這篇文章所在的這一個(gè)頁(yè)面才算網(wǎng)頁(yè)。

          所以,整個(gè)淘寶網(wǎng)站的頁(yè)面那么多,蜘蛛在收集網(wǎng)頁(yè)時(shí),就算收集了A商品那頁(yè)詳情頁(yè)面,但不代表B商品詳情頁(yè)面也被收集進(jìn)索引數(shù)據(jù)庫(kù)了,蜘蛛會(huì)對(duì)每個(gè)頁(yè)面進(jìn)行評(píng)判,只有該頁(yè)面到達(dá)他的標(biāo)準(zhǔn)了,認(rèn)為可以收集到索引數(shù)據(jù)庫(kù)里了,才會(huì)把這個(gè)頁(yè)面添加進(jìn)去,而不是它認(rèn)為淘寶這個(gè)網(wǎng)站很有價(jià)值,就把整個(gè)網(wǎng)站里所有頁(yè)面全部收錄進(jìn)去了,SEO里有個(gè)概念叫做收錄率,指的是頁(yè)面的收錄率,而不是網(wǎng)站的收錄率。

          蜘蛛

          搜索引擎用來(lái)爬行和訪問(wèn)頁(yè)面的程序叫做蜘蛛/爬蟲(chóng)(spider),或機(jī)器人(bot)。

          蜘蛛訪問(wèn)網(wǎng)站頁(yè)面的流程和人們?cè)跒g覽器上訪問(wèn)頁(yè)面的流程差不多,蜘蛛訪問(wèn)頁(yè)面時(shí),會(huì)發(fā)出頁(yè)面訪問(wèn)請(qǐng)求,服務(wù)器會(huì)返回HTML代碼,蜘蛛把收到的HTML代碼存入原始頁(yè)面數(shù)據(jù)庫(kù)。

          互聯(lián)網(wǎng)上的頁(yè)面這么多,為了提高爬行和抓取的速度,搜索引擎會(huì)同時(shí)使用多個(gè)蜘蛛對(duì)頁(yè)面進(jìn)行爬行。

          理論上來(lái)說(shuō),互聯(lián)網(wǎng)上的所有頁(yè)面(這里指的是通過(guò)超鏈接互聯(lián)鏈接在一起的頁(yè)面,而不是那種雖然這個(gè)頁(yè)面存在,但是沒(méi)有任何網(wǎng)頁(yè)用超鏈接指向他),蜘蛛都可以沿著頁(yè)面上的超鏈接將所有頁(yè)面爬行一遍,但是蜘蛛不會(huì)這么做,蜘蛛的時(shí)間有限,它會(huì)用效率最高的方式找到互聯(lián)網(wǎng)上它覺(jué)得最有價(jià)值的網(wǎng)頁(yè)。
          如果一個(gè)網(wǎng)站的頁(yè)面普遍質(zhì)量較低,蜘蛛就會(huì)認(rèn)為這是一個(gè)低質(zhì)網(wǎng)站,讓用戶閱讀這類(lèi)沒(méi)有價(jià)值的網(wǎng)頁(yè)是沒(méi)有必要的,對(duì)于這類(lèi)網(wǎng)頁(yè),它會(huì)減少爬行的頻率,將重點(diǎn)放在其他質(zhì)量更高的網(wǎng)站,去其他更有價(jià)值的網(wǎng)站上收集網(wǎng)頁(yè)存入數(shù)據(jù)庫(kù)。

          但是蜘蛛不是全能,它也有評(píng)判錯(cuò)誤的時(shí)候,比如蜘蛛不會(huì)收集空短頁(yè)面,也就是內(nèi)容空洞毫無(wú)營(yíng)養(yǎng),主體內(nèi)容又短的頁(yè)面,蜘蛛不會(huì)浪費(fèi)數(shù)據(jù)庫(kù)的空間放入這些網(wǎng)頁(yè)。

          但是一個(gè)頁(yè)面究竟是不是真正的無(wú)價(jià)值網(wǎng)頁(yè),蜘蛛判斷成功的正確率并不是100%,就像一個(gè)登錄驗(yàn)證網(wǎng)頁(yè),確實(shí)沒(méi)有比那些傳遞知識(shí)的網(wǎng)頁(yè)更有價(jià)值,但是這是大部分網(wǎng)站一個(gè)必不可少的一個(gè)頁(yè)面,嚴(yán)格來(lái)說(shuō)并不是低質(zhì)頁(yè)面,但是如果蜘蛛爬行到了這個(gè)頁(yè)面,它并不理解人類(lèi)眼中的驗(yàn)證頁(yè)面是一個(gè)怎樣的存在,他只覺(jué)得,內(nèi)容短,沒(méi)什么豐富的內(nèi)容,好,那就是無(wú)價(jià)值的網(wǎng)頁(yè)了,它就像有一個(gè)專(zhuān)門(mén)用來(lái)記錄的小本本一樣,嗯,A網(wǎng)站,有一個(gè)低質(zhì)頁(yè)面,給這個(gè)網(wǎng)站評(píng)價(jià)好還是不好我還要在考慮一下,如果這樣的低質(zhì)頁(yè)面多了,蜘蛛就會(huì)覺(jué)得你的網(wǎng)站整體質(zhì)量較低,慢慢的就不愛(ài)到你網(wǎng)站上抓取網(wǎng)頁(yè)了。

          所以為了避免這種情況,不讓蜘蛛抓取這些網(wǎng)頁(yè)是最好的辦法,我們可以在項(xiàng)目根目錄創(chuàng)建一個(gè)txt文件,這個(gè)文件叫什么是有約定俗成的,文件名必須為 robots.txt,我們?cè)谖募锩嬉?guī)定好蜘蛛可以爬行/不能爬行哪些網(wǎng)頁(yè)就行(具體寫(xiě)法可以百度)。

          當(dāng)蜘蛛訪問(wèn)任何一個(gè)網(wǎng)站的時(shí)候,第一件事就是先訪問(wèn)這個(gè)網(wǎng)站根目錄下的robots.txt文件,如果文件里說(shuō)了禁止讓蜘蛛抓取XX文件/XX目錄,蜘蛛就會(huì)按照文件里規(guī)定的那樣,只抓取可以抓取的頁(yè)面。

          蜘蛛的分類(lèi)

          每個(gè)搜索引擎公司都有自己的蜘蛛,這些蜘蛛喜好不一,喜歡抓取什么類(lèi)型的網(wǎng)頁(yè)要看他們的主人,也就是要看搜索引擎公司他們的想法,雖然這些蜘蛛統(tǒng)稱(chēng)為蜘蛛,但他們屬于不同的主人,當(dāng)然名字肯定是不一樣的。

          在日志文件中可以看到有哪些公司的蜘蛛來(lái)訪問(wèn)過(guò)網(wǎng)站(user-agent那個(gè))

          蜘蛛主要分為下面幾個(gè):

          • 百度蜘蛛 Baiduspider

          • 谷歌蜘蛛 Googlebot

          • 有道蜘蛛 YodaoBot

          理論上來(lái)說(shuō),隨便找一個(gè)頁(yè)面,順著這個(gè)頁(yè)面,蜘蛛可以將互聯(lián)網(wǎng)上所有的頁(yè)面都爬一遍

          實(shí)際上這樣確實(shí)是可行的(除去那些沒(méi)有被任何一個(gè)網(wǎng)頁(yè)所指向的頁(yè)面),而蜘蛛是如何做到的呢?

          比如,蜘蛛先從A頁(yè)面開(kāi)始,它爬行到A頁(yè)面上,它可以獲取到A頁(yè)面中所有的超鏈接,蜘蛛再順著這個(gè)鏈接進(jìn)入到鏈接所指向的頁(yè)面,再獲取到這個(gè)頁(yè)面上所有的超鏈接進(jìn)行爬行抓取,這樣一來(lái),所有用超鏈接所關(guān)聯(lián)上的網(wǎng)頁(yè)便可以被蜘蛛都爬行一遍。

          蜘蛛在爬行時(shí),也是有自己的爬行策略的,就像吃西瓜,把整個(gè)西瓜切一半切成一個(gè)半圓體,我們選擇吃西瓜的方式可以深度優(yōu)先,隨便從中間還是邊緣開(kāi)始吃都行,比如先從中間吃,西瓜中間底下全部挖干凈了再圍著中間的圓圈慢慢往外面擴(kuò)散。

          或者廣度優(yōu)先,從中間或者是邊緣隨便哪里開(kāi)始都行,把表面一層挖完了西瓜再進(jìn)行下一個(gè)深度的挖取。

          蜘蛛的爬行策略

          蜘蛛的爬行策略和挖西瓜一樣,都是兩種方式

          • 深度優(yōu)先

          • 廣度優(yōu)先

          深度優(yōu)先如下圖

          蜘蛛先從A頁(yè)面開(kāi)始爬行,發(fā)現(xiàn)該頁(yè)面總共有3個(gè)超鏈接,A1、B1、XX,蜘蛛選擇先從A1頁(yè)面爬行下去,它在A1頁(yè)面發(fā)現(xiàn)了一個(gè)唯一的超鏈接A2,便沿著A2向下,以此類(lèi)推,等爬到最底下,也就是A4頁(yè)面,A4整個(gè)頁(yè)面上沒(méi)有任何超鏈接,再也無(wú)法往下爬行了,它便返回到B1開(kāi)始爬行,這就是深度優(yōu)先。

          廣度優(yōu)先如下

          這次這是一個(gè)利用廣度優(yōu)先策略的蜘蛛,它先從A頁(yè)面出發(fā),現(xiàn)在A頁(yè)面有3個(gè)鏈接,A1、B1、C1,它會(huì)先把A1、B1、C1先爬一遍,也就是第一層發(fā)現(xiàn)的超鏈接全部爬行完,然后再進(jìn)入第二層,也就是A1頁(yè)面。把A1頁(yè)面中所有的超鏈接全部爬行一遍,保證廣度上全部鏈接是都完成爬行了的。

          無(wú)論是深度優(yōu)先還是廣度優(yōu)先,蜘蛛都可以通過(guò)這兩個(gè)策略完成對(duì)整個(gè)互聯(lián)網(wǎng)頁(yè)面的爬行。
          當(dāng)然,由于蜘蛛的帶寬資源和時(shí)間有限的問(wèn)題,蜘蛛不會(huì)選擇爬完所有頁(yè)面,它實(shí)際收集到的頁(yè)面知識(shí)互聯(lián)網(wǎng)的一小部分,在條件限制的情況下,蜘蛛通常會(huì)深度優(yōu)先和廣度優(yōu)先混合使用,廣度優(yōu)先保證了盡可能照顧到多的網(wǎng)站,而廣度優(yōu)先保證了盡可能照顧到一部分網(wǎng)站中的內(nèi)頁(yè)。

          吸引蜘蛛抓取頁(yè)面

          可以看出,在實(shí)際情況中,蜘蛛不會(huì)爬行、抓取互聯(lián)網(wǎng)上所有的頁(yè)面,既然如此,蜘蛛所要做的就是盡量抓取重要頁(yè)面,而SEO人員要做的,就是吸引蜘蛛的注意,讓蜘蛛更多的抓取自己家網(wǎng)站的頁(yè)面。

          對(duì)于蜘蛛來(lái)說(shuō),頁(yè)面擁有哪些特征會(huì)被看作是重要頁(yè)面呢,主要有以下這幾方面因素:

          1.網(wǎng)站和頁(yè)面權(quán)重

          質(zhì)量高,資格老的網(wǎng)站被認(rèn)為權(quán)重較高,這種網(wǎng)站上頁(yè)面的爬行深度也會(huì)比較高,所以這種網(wǎng)站網(wǎng)頁(yè)被收錄的機(jī)會(huì)會(huì)更多。

          2.頁(yè)面更新度

          如A網(wǎng)頁(yè)的數(shù)據(jù)之前在蜘蛛爬行后已經(jīng)被保存在數(shù)據(jù)庫(kù)中了,當(dāng)蜘蛛第二次爬行A網(wǎng)頁(yè)時(shí),會(huì)將A網(wǎng)頁(yè)此時(shí)的數(shù)據(jù)和數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行對(duì)比,如果蜘蛛發(fā)現(xiàn)A網(wǎng)頁(yè)的內(nèi)容更新了,就會(huì)認(rèn)為這個(gè)網(wǎng)頁(yè)更新頻率多,蜘蛛抓取這個(gè)頁(yè)面的頻率也會(huì)更加頻繁,如果頁(yè)面和上次儲(chǔ)存的數(shù)據(jù)完全一樣,就說(shuō)明頁(yè)面是沒(méi)更新,蜘蛛就會(huì)減少自己爬行該頁(yè)面的頻率。

          3.高質(zhì)量的外鏈

          張三是班上公認(rèn)的人品好為人公正的學(xué)霸,李四是班上惹人討厭最?lèi)?ài)撒謊的學(xué)生,張三給大家說(shuō)王五這個(gè)人真的很聰明為人也很善良,其他同學(xué)都會(huì)認(rèn)為王五肯定是這樣,李四給其他同學(xué)說(shuō)王五這個(gè)人很好,其他同學(xué)基本不會(huì)相信李四的鬼話。

          同樣一句話,從不同人的嘴里說(shuō)出來(lái),造成的結(jié)果、影響都不一樣。

          鏈接的引用也是這樣,比如在一個(gè)蜘蛛認(rèn)為的高質(zhì)量頁(yè)面中,頁(yè)面在最后引用了一個(gè)鏈接,指向你的頁(yè)面,那么這個(gè)高質(zhì)量頁(yè)面的引用,在蜘蛛判斷你的網(wǎng)頁(yè)是否是高質(zhì)量網(wǎng)頁(yè)時(shí),也會(huì)產(chǎn)生一定的影響,被高質(zhì)量網(wǎng)頁(yè)引用的多了(超級(jí)多的大佬夸你人好),那么蜘蛛在判斷你頁(yè)面時(shí)產(chǎn)生的影響也就更大(同學(xué)也覺(jué)得你就是人好)。

          4.與首頁(yè)的距離

          一般來(lái)說(shuō)自己網(wǎng)站被其他網(wǎng)站引用最多的頁(yè)面就是首頁(yè),所以它的權(quán)重相比來(lái)說(shuō)是最高的,比如A頁(yè)面是A網(wǎng)站的首頁(yè),可以得出的結(jié)論是,離A網(wǎng)頁(yè)更進(jìn)的頁(yè)面,頁(yè)面權(quán)重也容易更高,比如A頁(yè)面上的超鏈接更容易被蜘蛛爬行,更容易獲得蜘蛛的抓取,那些沒(méi)被蜘蛛發(fā)現(xiàn)的網(wǎng)頁(yè),權(quán)重自然就是0。

          還有一點(diǎn)比較重要的是,蜘蛛在爬行頁(yè)面時(shí)會(huì)進(jìn)行一定程度的復(fù)制檢測(cè),也就是當(dāng)前被爬行的頁(yè)面的內(nèi)容,是否和已經(jīng)保存的數(shù)據(jù)有重合(當(dāng)頁(yè)面內(nèi)容為轉(zhuǎn)載/不當(dāng)抄襲行為時(shí)就會(huì)被蜘蛛檢測(cè)出來(lái)),如果一個(gè)權(quán)重很低的網(wǎng)站上有大量轉(zhuǎn)載/抄襲行為,蜘蛛很可能不會(huì)再繼續(xù)爬行。

          之所以要這么做也是為了用戶的體驗(yàn),如果沒(méi)有這些去重步驟,當(dāng)用戶想要搜索一些內(nèi)容時(shí),發(fā)現(xiàn)返回的結(jié)果全都是一模一樣的內(nèi)容,會(huì)大大影響用戶的體驗(yàn),最后導(dǎo)致的結(jié)果就是這個(gè)搜索引擎絕對(duì)不會(huì)有人再用了,所以為了用戶使用的便利,也是為了自己公司的正常發(fā)展。

          地址庫(kù)

          互聯(lián)網(wǎng)上的網(wǎng)頁(yè)這么多,為了避免重復(fù)爬行和抓取網(wǎng)頁(yè),搜索引擎會(huì)建立地址庫(kù),一個(gè)是用來(lái)記錄已經(jīng)被發(fā)現(xiàn)但還沒(méi)有抓取的頁(yè)面,一個(gè)是已經(jīng)被抓取過(guò)的頁(yè)面。

          待訪問(wèn)地址庫(kù)(已經(jīng)發(fā)現(xiàn)但沒(méi)有抓取)中的地址來(lái)源于下面幾種方式:

          1.人工錄入的地址

          2.蜘蛛抓取頁(yè)面后,從HTML代碼中獲取新的鏈接地址,和這兩個(gè)地址庫(kù)中的數(shù)據(jù)進(jìn)行對(duì)比,如果沒(méi)有,就把地址存入待訪問(wèn)地址庫(kù)。

          3.站長(zhǎng)(網(wǎng)站負(fù)責(zé)人)提交上去的想讓搜索引擎抓取的頁(yè)面。(一般這種效果不大)

          蜘蛛按照重要性從待訪問(wèn)地址庫(kù)中提取URL,訪問(wèn)并抓取頁(yè)面,然后把這個(gè)URL地址從待訪問(wèn)地址庫(kù)中刪除,放進(jìn)已訪問(wèn)地址庫(kù)中。

          文件存儲(chǔ)

          蜘蛛會(huì)將抓取的數(shù)據(jù)存入原始頁(yè)面數(shù)據(jù)庫(kù)。

          存入的數(shù)據(jù)和服務(wù)器返回給蜘蛛的HTML內(nèi)容是一樣的,每個(gè)頁(yè)面存在數(shù)據(jù)庫(kù)里時(shí)都有自己的一個(gè)獨(dú)一無(wú)二的文件編號(hào)。

          預(yù)處理

          我們?nèi)ド虉?chǎng)買(mǎi)菜時(shí),會(huì)看到蔬菜保險(xiǎn)柜里的這些蔬菜被擺放的整整齊齊,這里舉的例子是那些用保鮮膜包好有經(jīng)過(guò)包裝的蔬菜。

          最后呈現(xiàn)在顧客面前的就是上面這張圖那樣,包裝完好,按照不同的分類(lèi)擺放有序,顧客一眼就能很清楚的看到每個(gè)區(qū)域分別是什么蔬菜。

          在最終完成這個(gè)結(jié)果之前,整個(gè)流程大概也是三個(gè)步驟:

          1.選出可以售賣(mài)的蔬菜

          從一堆蔬菜中,選出可以拿去售賣(mài)的蔬菜。

          2.預(yù)處理

          此時(shí)你面前擺放的就是全部可以拿去售賣(mài)的蔬菜了,但是如果,今天就要把這些蔬菜放到蔬菜保險(xiǎn)柜中的話,你今天才開(kāi)始對(duì)這些蔬菜進(jìn)行整理會(huì)浪費(fèi)大量的時(shí)間(給蔬菜進(jìn)行包裝等),說(shuō)不定顧客來(lái)了蔬菜還沒(méi)整理好。
          所以你的解決方法是,提前將這些可以拿去售賣(mài)的蔬菜提前包裝好,存放在倉(cāng)庫(kù)里,等保險(xiǎn)柜中的蔬菜缺少了需要補(bǔ)貨時(shí),花個(gè)幾分鐘時(shí)間跑去倉(cāng)庫(kù)把蔬菜拿出來(lái)再擺放再貨架上就行了。(我猜的,具體商場(chǎng)里的流程是怎么樣的我也不知道,為了方便后續(xù)的理解用生活上的例子進(jìn)行說(shuō)明效果會(huì)更好)

          3.擺放上保險(xiǎn)柜

          也就是上面最后一段內(nèi)容那樣,當(dāng)需要補(bǔ)貨時(shí),從倉(cāng)庫(kù)里拿出包裝好的蔬菜,按照蔬菜的類(lèi)別擺放到合適的位置就可以了,這個(gè)就是最后的排序步驟。

          回到搜索引擎的工作流程中,這個(gè)預(yù)處理的步驟就和上面商場(chǎng)預(yù)處理步驟的作用一樣。

          當(dāng)蜘蛛完成數(shù)據(jù)收集后,就會(huì)進(jìn)入到這個(gè)步驟。

          蜘蛛所完成的工作,就是在收集了數(shù)據(jù)后將數(shù)據(jù)(HTML)存入原始頁(yè)面數(shù)據(jù)庫(kù)。

          而這些數(shù)據(jù),不是用戶在搜索后,直接用來(lái)進(jìn)行排序并展示在搜索結(jié)果頁(yè)的數(shù)據(jù)。

          原始頁(yè)面數(shù)據(jù)庫(kù)中的頁(yè)面數(shù)量都是在數(shù)萬(wàn)億級(jí)別以上,如果在用戶搜索后對(duì)原始頁(yè)面數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行實(shí)時(shí)排序,讓排名程序(每個(gè)步驟所使用的程序不一樣,收集數(shù)據(jù)的程序叫蜘蛛,排名時(shí)所用的程序是排名程序)分析每個(gè)頁(yè)面數(shù)據(jù)與用戶想搜索的內(nèi)容的相關(guān)性,計(jì)算量太大,會(huì)浪費(fèi)太多時(shí)間,不可能在一兩秒內(nèi)返回排名結(jié)果。

          因此,我們需要先將原始頁(yè)面數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行預(yù)處理,為最后的排名做好準(zhǔn)備。

          提取文字

          我們存入原始頁(yè)面數(shù)據(jù)庫(kù)中的,是HTML代碼,而HTML代碼中,不僅有用戶在頁(yè)面上直接可以看到的文字內(nèi)容,還有其他例如js,AJAX等這類(lèi)搜索引擎無(wú)法用于排名的內(nèi)容。

          首先要做的,就是從HTML文件中去除這些無(wú)法解析的內(nèi)容,提取出可以進(jìn)行排名處理步驟的文字內(nèi)容

          比如下面這段代碼

          <html>
          <head>
          <meta charset="utf-8">
          <meta name="description" content="這是一個(gè)描述內(nèi)容"/>
          <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
          <link rel="icon" type="image/png" sizes="32x32" href="http://static001.infoq.cn/static/infoq/www/img/InfoQ-share-icon2.jpg">
          <title>軟件工程師需要了解的搜索引擎知識(shí)</title>
          <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
          <script type="text/x-mathjax-config">
          MathJax.Hub.Config({
          showProcessingMessages: false,
          messageStyle: "none",
          tex2jax: {
          inlineMath: [['$','$'], ['\\(','\\)']],
          displayMath: [ ["$$","$$"] ],
          skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code', 'a']
          }
          });
          MathJax.Hub.Register.MessageHook("End Process", function (message) {
          var eve = new Event('mathjaxfini')
          window.dispatchEvent(eve)
          })
          </script>
          </head>
          <body>
          <div id="app">hi</div>
          <img alt="Google" src="/images/test.png"
          </body>
          </html>

          可以看出整個(gè)HTML中,真正屬于文字內(nèi)容的信息只有兩句

          這是一個(gè)描述內(nèi)容
          軟件工程師需要了解的搜索引擎知識(shí)
          hi
          Google

          搜索引擎最終提取出來(lái)的信息就是這四句,用于排名的文字也是這四句。

          可以提取出來(lái)的文字內(nèi)容大概就是,Meta標(biāo)簽中的文字、img標(biāo)簽alt屬性中的文字、Flash文件的替代文字、鏈接錨文字等。

          中文分詞

          分詞是中文搜索引擎特有的步驟,搜索引擎存儲(chǔ)/處理頁(yè)面/用戶搜索時(shí)都是以詞為基礎(chǔ)的。

          I'm fine, and you?

          中文和英文等語(yǔ)言單詞不同,在使用英文時(shí)各個(gè)單詞會(huì)有空格分隔,搜索引擎可以直接把每一個(gè)句子劃分為多個(gè)英文單詞的集合。而對(duì)中文來(lái)說(shuō),詞匯和詞匯之間是沒(méi)有任何分隔符可以對(duì)各詞匯進(jìn)行分隔的。

          比如這句話里的詞就是連接在一起的

          對(duì)于這種情況,搜索引擎首先需要分辨哪幾個(gè)字組成一個(gè)詞,如 我喜歡吃【水果】,或者哪些字本身就是一個(gè)詞,如 這里有【水】,

          再如下面這句話

          你好,這是一篇關(guān)于搜索引擎的文章

          搜索引擎會(huì)將這一段文字拆解成一個(gè)個(gè)詞匯,大概如下

          你好
          這是
          一篇
          關(guān)于
          搜索引擎

          文章

          搜索引擎將這段文字拆解成了7個(gè)詞匯(我瞎猜的,具體多少個(gè)我也不知道,每個(gè)搜索引擎分詞的方法都不一樣)

          中文分詞的方法基本上有兩種:

          • 基于詞典匹配

          • 基于統(tǒng)計(jì)

          1.基于詞典匹配

          將需要分析的一段漢字與一個(gè)時(shí)間創(chuàng)建好的詞典中的詞條進(jìn)行匹配,如果在這段漢字中掃描到詞典中已有的詞條則匹配成功。

          這種匹配方式最簡(jiǎn)單,但匹配的正確程序取決于這個(gè)詞典的完整性和更新情況。

          2.基于統(tǒng)計(jì)

          一般是通過(guò)機(jī)器學(xué)習(xí)完成,通過(guò)對(duì)海量網(wǎng)頁(yè)上的文字樣本進(jìn)行分析,計(jì)算出字與字相鄰出現(xiàn)的統(tǒng)計(jì)概率,幾個(gè)字相鄰出現(xiàn)越多,就越可能形成一個(gè)詞。

          這種優(yōu)勢(shì)是對(duì)新出現(xiàn)的詞反應(yīng)更快速。

          實(shí)際使用中的分詞系統(tǒng)都是兩種方法同時(shí)混合使用。

          去停止詞

          不管是英文還是中文,頁(yè)面中都會(huì)有一些出現(xiàn)頻率很高的&對(duì)內(nèi)容沒(méi)有任何影響的詞,如中文的【的】、【啊】、【哈】之類(lèi),這些詞被稱(chēng)為停止詞。

          英文中常見(jiàn)的停止詞有[the]/[a]/[an]等。

          搜索引擎會(huì)去掉這些停止詞,使數(shù)據(jù)主題更突出,減少無(wú)謂的計(jì)算量。

          去掉噪聲詞

          大部分頁(yè)面里有這么一部分內(nèi)容對(duì)頁(yè)面主題沒(méi)什么貢獻(xiàn),比如A頁(yè)面的內(nèi)容是一篇關(guān)于SEO優(yōu)化的文章,關(guān)鍵詞是SEO,但是除了講解SEO這個(gè)內(nèi)容的主體內(nèi)容外,共同組成這個(gè)頁(yè)面的還有例如頁(yè)眉,頁(yè)腳,廣告等區(qū)域

          在這些部分出現(xiàn)的詞語(yǔ)可能和頁(yè)面內(nèi)容本身的關(guān)鍵詞并不相關(guān)。

          比如導(dǎo)航欄中如何出現(xiàn)【歷史】這個(gè)詞,導(dǎo)航欄上想要表達(dá)的實(shí)際是歷史記錄之類(lèi)的意思,搜索引擎可能會(huì)把他誤以為是XX國(guó)家歷史,XX時(shí)代歷史之類(lèi)這種層面的【歷史】,搜索引擎所理解的和頁(yè)面本身內(nèi)容想表達(dá)的完全不相關(guān),所以這些區(qū)域都屬于噪聲,在搜索引擎分析一個(gè)頁(yè)面的時(shí)候,它們只會(huì)對(duì)頁(yè)面主題起到分散作用。

          搜索引擎的排名程序在對(duì)數(shù)據(jù)進(jìn)行排名時(shí)不能參考這些噪聲內(nèi)容,我們?cè)陬A(yù)處理階段就需要把這些噪聲時(shí)別出來(lái)并消除他們。

          消除噪聲的方法是根據(jù)HTML的標(biāo)簽對(duì)頁(yè)面進(jìn)行分塊,如頁(yè)眉是header標(biāo)簽,頁(yè)腳是footer標(biāo)簽等等,去除掉這些區(qū)域后,剩下的才是頁(yè)面主體內(nèi)容。

          去重

          也就是去掉重復(fù)的網(wǎng)頁(yè),同一篇文章經(jīng)常會(huì)重復(fù)在不同網(wǎng)站/同一個(gè)網(wǎng)站的不同網(wǎng)址上。為了用戶的體驗(yàn),去重步驟是必須的,搜索引擎會(huì)對(duì)頁(yè)面進(jìn)行識(shí)別&刪除重復(fù)內(nèi)容,這個(gè)過(guò)程稱(chēng)為蛆蟲(chóng)和。

          去重的方法是先從頁(yè)面主體內(nèi)容中選取最有代表性的一部分關(guān)鍵詞(經(jīng)常是出現(xiàn)頻率最高的關(guān)鍵詞,由于之前已經(jīng)有了去停止詞的步驟,因此在這時(shí)出現(xiàn)頻率最高的關(guān)鍵詞可能就真的是整個(gè)頁(yè)面的關(guān)鍵詞了),然后計(jì)算這些關(guān)鍵詞的數(shù)字指紋。

          通常我們?cè)陧?yè)面中選取10個(gè)關(guān)鍵詞就可以達(dá)到比較高的計(jì)算準(zhǔn)確性了。

          典型的指紋計(jì)算方法如MD5算法(信息摘要算法第五版)。這類(lèi)指紋算法的特點(diǎn)是,輸入(也就是上面提取出來(lái)的關(guān)鍵詞)只要有任何微小的變化,都會(huì)導(dǎo)致計(jì)算出的指紋有很大差距。

          比如我們用兩個(gè)數(shù)相乘,第一組和第二組的不同僅僅是第一個(gè)數(shù)字 0.001 的差別,最終生成的結(jié)果卻千差萬(wàn)別。

          了解了搜索引擎的去重算法后,就會(huì)發(fā)現(xiàn)那些在文章發(fā)布者眼里的原創(chuàng)內(nèi)容實(shí)際對(duì)搜索引擎來(lái)說(shuō)就是非原創(chuàng),比如簡(jiǎn)單的增加/刪除【的】【地】等這些去停止詞、調(diào)換段落順序、混合不同文章等操作,在搜索引擎進(jìn)行去重算法后,都會(huì)被判斷為非原創(chuàng)內(nèi)容,因?yàn)檫@些操作并不會(huì)改變文章的關(guān)鍵詞。

          (比如我寫(xiě)的這篇筆記里的一些段落就是‘借鑒’了一下,我是從書(shū)里看的不是在網(wǎng)頁(yè)上直接瀏覽的,如果搜索引擎在對(duì)我這篇文章進(jìn)行文字提取、分詞、消噪、去重后,發(fā)現(xiàn)剩下的關(guān)鍵詞和已收錄的某個(gè)網(wǎng)頁(yè)數(shù)據(jù)的內(nèi)容都匹配上了,就會(huì)認(rèn)為我是偽原創(chuàng)甚至非原創(chuàng),最終影響的就是我這篇文章在搜索引擎工作原理這個(gè)關(guān)鍵詞上的排名)

          正向索引

          正向索引可以簡(jiǎn)稱(chēng)為索引。

          經(jīng)過(guò)上述各步驟(提取、分詞、消噪、去重)后,搜索引擎最終得到的就是獨(dú)特的、能反映頁(yè)面主體內(nèi)容的、以詞為單位的內(nèi)容。

          接下來(lái)由搜索引擎的索引程序提取關(guān)鍵詞,按照分詞程序劃分好的詞,把頁(yè)面轉(zhuǎn)換為一個(gè)由關(guān)鍵詞組成的集合,同時(shí)還需要記錄每一個(gè)關(guān)鍵詞在頁(yè)面上的出現(xiàn)頻率、出現(xiàn)次數(shù)、格式(如是出現(xiàn)在標(biāo)題標(biāo)簽、黑體、h標(biāo)簽、還是錨文字等)、位置(如頁(yè)面第一段文字等)。

          搜索引擎的索引程序會(huì)將頁(yè)面和關(guān)鍵詞形成的詞表結(jié)構(gòu)存儲(chǔ)進(jìn)索引庫(kù)。

          簡(jiǎn)化的索引詞表形式如圖

          每個(gè)文件都對(duì)應(yīng)一個(gè)文件ID,文件內(nèi)容被表示成一串關(guān)鍵詞的集合。

          實(shí)際上在搜索引擎索引庫(kù)中,關(guān)鍵詞也已經(jīng)轉(zhuǎn)換為關(guān)鍵詞ID,這樣的數(shù)據(jù)結(jié)構(gòu)被稱(chēng)為正向索引。

          倒排索引

          正向索引不能直接用于排名,假設(shè)用戶搜索關(guān)鍵詞【2】,如果只存在正向索引,排名程序需要掃描所有索引庫(kù)中的文件,找出包含關(guān)鍵詞【2】的文件,再進(jìn)行相關(guān)性計(jì)算。

          這樣的計(jì)算量無(wú)法滿足實(shí)時(shí)返回排名結(jié)果的要求。

          我們可以提前對(duì)所有關(guān)鍵詞進(jìn)行分類(lèi),搜索引擎會(huì)將正向索引數(shù)據(jù)庫(kù)重新構(gòu)造為倒排索引,把文件對(duì)應(yīng)到關(guān)鍵詞的映射轉(zhuǎn)換為關(guān)鍵詞到文件的映射,如下圖

          在倒排索引中關(guān)鍵詞是主鍵,每個(gè)關(guān)鍵詞都對(duì)應(yīng)著一系列文件,比如上圖第一排右側(cè)顯示出來(lái)的文件,都是包含了關(guān)鍵詞1的文件。

          這樣當(dāng)用戶搜索某個(gè)關(guān)鍵詞時(shí),排序程序在倒排索引中定位到這個(gè)關(guān)鍵詞,就可以馬上找出所有包含這個(gè)關(guān)鍵詞的文件。

          給搜索結(jié)果進(jìn)行排名

          經(jīng)過(guò)前面的蜘蛛抓取頁(yè)面,對(duì)數(shù)據(jù)預(yù)處理&索引程序計(jì)算得到倒排索引后,搜索引擎就準(zhǔn)備好可以隨時(shí)處理用戶搜索了。

          用戶在搜索框輸入想要查詢的內(nèi)容后,排名程序調(diào)用索引庫(kù)的數(shù)據(jù),計(jì)算排名后將內(nèi)容展示在搜索結(jié)果頁(yè)中。

          搜索詞處理

          搜索引擎接收到用戶輸入的搜索詞后,需要對(duì)搜索詞做一些處理,然后才進(jìn)入排名過(guò)程。

          搜索詞處理過(guò)程包括如下幾個(gè)方面:

          1.中文分詞

          和之前預(yù)處理步驟中的分詞流程一樣,搜索詞也必須進(jìn)行中文分詞,將查詢字符串轉(zhuǎn)換為以詞為單位的關(guān)鍵詞組合。分詞原理和頁(yè)面分詞時(shí)相同。

          2.去停止詞

          同上。

          3.指令處理

          上面兩個(gè)步驟完成后,搜索引擎對(duì)剩下的內(nèi)容的默認(rèn)處理方式是在關(guān)鍵詞之間使用【與】邏輯。

          比如用戶在搜索框中輸入【減肥的方法】,經(jīng)過(guò)分詞和去停止詞后,剩下的關(guān)鍵詞為【減肥】、【方法】,搜索引擎排序時(shí)默認(rèn)認(rèn)為,用戶想要查詢的內(nèi)容既包含【減肥】,也!注意這個(gè)也!!!也包含【方法】!

          只包含【減肥】不包含【方法】,或者只包含【方法】不包含【減肥】的頁(yè)面,都會(huì)被認(rèn)為是不符合搜索條件的。

          文件匹配

          搜索詞經(jīng)過(guò)上面的處理后,搜索引擎得到的是以詞為單位的關(guān)鍵詞集合。

          進(jìn)入的下一個(gè)階段-文件匹配階段,就是找出含有所有關(guān)鍵詞的文件。

          在索引部分提到的倒排索引使得文件匹配能夠快速完成,如下圖

          假設(shè)用戶搜索【關(guān)鍵詞2 關(guān)鍵詞7】,排名程序只要在倒排索引中找到【關(guān)鍵詞2】和【關(guān)鍵詞7】這兩個(gè)詞,就能找到分別含有這兩個(gè)詞的所有頁(yè)面文件。

          經(jīng)過(guò)簡(jiǎn)單計(jì)算就能找出既包含【關(guān)鍵詞2】,也包含【關(guān)鍵詞7】的所有頁(yè)面:【文件1】和【文件6】。

          初始子集的選擇

          找到包含所有關(guān)鍵詞的匹配文件后,還不能對(duì)這些文件進(jìn)行相關(guān)性計(jì)算,因?yàn)樵趯?shí)際情況中,找到的文件經(jīng)常會(huì)有幾十萬(wàn)幾百萬(wàn),甚至上千萬(wàn)個(gè)。要對(duì)這么多文件實(shí)時(shí)進(jìn)行相關(guān)性計(jì)算,需要的時(shí)間還是挺長(zhǎng)的。

          實(shí)際上大部分用戶只喜歡查看前面兩頁(yè),也就是前20個(gè)結(jié)果,后面的真的是懶都懶得翻!

          對(duì)于google搜索引擎來(lái)說(shuō),最多只會(huì)給用戶返回1000個(gè)搜索結(jié)果,如下(100頁(yè),每頁(yè)10條結(jié)果)

          而百度搜索引擎,最多只會(huì)返回760條結(jié)果

          所以搜索引擎只需要計(jì)算前1000/760個(gè)結(jié)果的相關(guān)性,就能滿足要求。

          由于所有匹配文件都已經(jīng)具備了最基本的相關(guān)性(這些文件都包含所有查詢關(guān)鍵詞),搜索引擎會(huì)先篩選出1000個(gè)頁(yè)面權(quán)重較高的一個(gè)文件,通過(guò)對(duì)權(quán)重的篩選初始化一個(gè)子集,再對(duì)這個(gè)子集中的頁(yè)面進(jìn)行相關(guān)性計(jì)算。

          相關(guān)性計(jì)算

          用權(quán)重選出初始子集之后,就是對(duì)子集中的頁(yè)面計(jì)算關(guān)鍵詞相關(guān)性的步驟了。

          計(jì)算相關(guān)性是排名過(guò)程中最重要的一步。

          影響相關(guān)性的主要因素包括如下幾個(gè)方面:

          1.關(guān)鍵詞常用程度。

          經(jīng)過(guò)分詞后的多個(gè)關(guān)鍵詞,對(duì)整個(gè)搜索字符串的意義貢獻(xiàn)并不相同。

          越常用的詞對(duì)搜索詞的意義貢獻(xiàn)越小,越不常用的詞對(duì)搜索詞的意義貢獻(xiàn)越大。舉個(gè)例子,假設(shè)用戶輸入的搜索詞是“我們冥王星”。“我們”這個(gè)詞常用程度非常高,在很多頁(yè)面上會(huì)出現(xiàn),它對(duì)“我們冥王星”這個(gè)搜索詞的辨識(shí)程度和意義相關(guān)度貢獻(xiàn)就很小。找出那些包含“我們”這個(gè)詞的頁(yè)面,對(duì)搜索排名相關(guān)性幾乎沒(méi)有什么影響,有太多頁(yè)面包含“我們”這個(gè)詞。

          而“冥王星”這個(gè)詞常用程度就比較低,對(duì)“我們冥王星”這個(gè)搜索詞的意義貢獻(xiàn)要大得多。那些包含“冥王星”這個(gè)詞的頁(yè)面,對(duì)“我們冥王星”這個(gè)搜索詞會(huì)更為相關(guān)。

          常用詞的極致就是停止詞,對(duì)頁(yè)面意義完全沒(méi)有影響。

          所以搜索引擎對(duì)搜索詞串中的關(guān)鍵詞并不是一視同仁地處理,而是根據(jù)常用程度進(jìn)行加權(quán)。不常用的詞加權(quán)系數(shù)高,常用詞加權(quán)系數(shù)低,排名算法對(duì)不常用的詞給予更多關(guān)注。

          我們假設(shè)A、B兩個(gè)頁(yè)面都各出現(xiàn)“我們”及“冥王星”兩個(gè)詞。但是“我們”這個(gè)詞在A頁(yè)面出現(xiàn)于普通文字中,“冥王星”這個(gè)詞在A頁(yè)面出現(xiàn)于標(biāo)題標(biāo)簽中。B頁(yè)面正相反,“我們”出現(xiàn)在標(biāo)題標(biāo)簽中,而“冥王星”出現(xiàn)在普通文字中。那么針對(duì)“我們冥王星”這個(gè)搜索詞,A頁(yè)面將更相關(guān)。

          2.詞頻及密度。一般認(rèn)為在沒(méi)有關(guān)鍵詞堆積的情況下,搜索詞在頁(yè)面中出現(xiàn)的次數(shù)多,密度越高,說(shuō)明頁(yè)面與搜索詞越相關(guān)。當(dāng)然這只是一個(gè)大致規(guī)律,實(shí)際情況未必如此,所以相關(guān)性計(jì)算還有其他因素。出現(xiàn)頻率及密度只是因素的一部分,而且重要程度越來(lái)越低。

          3.關(guān)鍵詞位置及形式。就像在索引部分中提到的,頁(yè)面關(guān)鍵詞出現(xiàn)的格式和位置都被記錄在索引庫(kù)中。關(guān)鍵詞出現(xiàn)在比較重要的位置,如標(biāo)題標(biāo)簽、黑體、H1等,說(shuō)明頁(yè)面與關(guān)鍵詞越相關(guān)。這一部分就是頁(yè)面SEO所要解決的。

          4.關(guān)鍵詞距離。切分后的關(guān)鍵詞完整匹配地出現(xiàn),說(shuō)明與搜索詞最相關(guān)。比如搜索“減肥方法”時(shí),頁(yè)面上連續(xù)完整出現(xiàn)“減肥方法”四個(gè)字是最相關(guān)的。如果“減肥”和“方法”兩個(gè)詞沒(méi)有連續(xù)匹配出現(xiàn),出現(xiàn)的距離近一些,也被搜索引擎認(rèn)為相關(guān)性稍微大一些。

          5.鏈接分析及頁(yè)面權(quán)重。除了頁(yè)面本身的因素,頁(yè)面之間的鏈接和權(quán)重關(guān)系也影響關(guān)鍵詞的相關(guān)性,其中最重要的是錨文字。頁(yè)面有越多以搜索詞為錨文字的導(dǎo)入鏈接,說(shuō)明頁(yè)面的相關(guān)性越強(qiáng)。
          鏈接分析還包括了鏈接源頁(yè)面本身的主題、錨文字周?chē)奈淖值取?nbsp;   

          瀏覽 43
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲黄色电影免费观看 | 婷婷五月天婷婷五月天婷婷五月天色 | 成人无码区免费A片 | 黑人操逼在线观看 | 亚洲日韩人妻蜜臀专区无码 |