分詞與索引庫

分詞是很多做SEO的人常聽到的概念,為瞭讓大傢在這個方面不會有疑惑,現在要來講一下分詞以及索引庫。這也是更深入的瞭解搜索引擎的開始。

搜索引擎每天都是在處理一個基本的需求:用戶搜索一個關鍵詞,搜索引擎馬上找到相關的網頁給用戶。這個過程要怎麼實現呢?下面就分步來瞭解這個過程。

首先搜索引擎要盡可能多的把互聯網上的網頁搜集下來,這樣能提供大量的網頁給用戶查詢。這一部分由爬蟲來解決,順著互聯網上的鏈接一個個往下抓取。最後就有瞭一堆記錄著網頁各種信息的資料庫。目前的現狀,最後能使這個資料庫裡有大概100多億個網頁。資料庫裡記錄瞭這些網頁的URL,整個網頁的HTML代碼,網頁標題等等信息。

然後,搜索引擎拿到用戶輸入的這個關鍵詞後,要從這個資料庫裡把相關的網頁找出來給用戶。這裡就碰到好幾個問題瞭:

1,要怎麼快速的從上100億個網頁裡找出匹配的網頁的呢?

要知道這是從上百億的網頁裡找符合這個關鍵詞內容的網頁,如果像用word裡那種用ctrl + F 輪詢的查找方式的話,即使用超級計算機,也不知道要消耗多少時間。但是現在的搜索引擎,在幾分之一秒裡就實現瞭。所以一定是做瞭一些處理才實現的。

解決辦法也倒簡單,就是建立一份索引庫。就像我們查《新華字典》一樣,我們不會翻遍《新華字典》的每一頁來查那個字在哪頁,而是先去索引表那裡找這個字,拿到頁碼後,直接翻到那頁就可以瞭。搜索引擎也會為上百億的網頁建立一個索引庫,用戶查詢信息的時候,是先到搜索引庫裡查一下要找的信息在哪些網頁,然後就引導你去那些網頁的。

如下圖:

索引庫

2,索引庫裡用什麼樣的分類方式?

我們知道,《新華字典》的索引表是用字母列表或者偏旁部首的分類方式的。那麼搜索引擎的索引庫裡是怎麼分類的?是不是也可以用字母列表的方式?

搜索引擎如果以字母列表的方式排列索引庫,那麼平均每個字母下要查詢的網頁數量是 100億÷26=3.85億 ,也還是一個很大的數字。而且搜索引擎上,今天是100億個網頁,過不瞭多久就是300億個網頁瞭。

最後,終於找到一個解決辦法:索引庫裡用詞語來分類。

因為盡管互聯網上的網頁是不斷激增的,但是每一種語言裡,詞語的數量都是相對固定的。比如英語就是一百多萬個單詞,100億 ÷ 1百萬 = 1 萬;漢語是8萬多個詞語,100億÷8萬=12萬5千。都是計算機很容易處理得過來的。

用詞語來分類還有一個好處,就是可以匹配用戶查詢的那個詞語。本來用戶就是要查這個詞語的,那我就按這個詞語去分類就是。

所以,搜索引擎的索引庫,最後就是這個樣子的: