本文約2200 字,建議閱讀時間為4分鐘,理解為主。 在開始講述搜索引擎技術(shù)架構(gòu)之前,大致闡述下搜索引擎的基本知識,有助于理解技術(shù)問題。 1搜索引擎之基礎(chǔ)知識 1.1概念 搜索引擎,是指根據(jù)一定的策略、運(yùn)用特定的計算機(jī)程序從互聯(lián)網(wǎng)上搜集信息,在對信息進(jìn)行組織和處理后,為用戶提供檢索服務(wù),將用戶檢索相關(guān)的信息展示給用戶的系統(tǒng)。 從以上解釋中,很容易提取出四個知識點(diǎn): 搜索引擎是什么? 是一個軟件系統(tǒng)。 搜索引擎從哪里搜索信息? 從互聯(lián)網(wǎng)上。 搜索引擎從互聯(lián)網(wǎng)上干什么? 搜集信息。 搜索信息干什么? 為用戶提供服務(wù)。 簡而言之,搜索引擎就是從互聯(lián)網(wǎng)上搜集信息,并為用戶提供服務(wù)的軟件系統(tǒng)。 1.2種類 搜索引擎也是分為很多種類的,從搜索信息的不同對象來說,可以分為: 全文搜索引擎,F(xiàn)ull Text Search Engine 顧名思義,即對網(wǎng)頁的文字、圖片、視頻、鏈接等全部內(nèi)容進(jìn)行搜索,如百度、Google。 全文搜索引擎案例之百度 全文搜索引擎案例之Google 垂直搜索引擎,Vertical Search Engine 即對網(wǎng)頁的特定垂直領(lǐng)進(jìn)行搜集和處理,如國內(nèi)的攜程只針對于機(jī)票、旅行信息進(jìn)行搜集和處理,如國外的Pinterest主要針對于圖片進(jìn)行搜集和處理。 垂直搜索引擎案例之?dāng)y程 垂直搜索引擎案例之Pinterest 元搜索引擎,Meta Search Engine “元”可以理解為數(shù)據(jù)的數(shù)據(jù),比如這篇文章的字?jǐn)?shù)多少、大小、多少等信息。 抽象來說,元搜索引擎就是搜集和處理搜索引擎的搜索引擎。 具體來說,元搜索引擎就是整合了很多種搜索引擎的數(shù)據(jù),同時提供給用戶。 如meta crawler等(國內(nèi)訪問不了)。 元搜索引擎之Meta Crawler 2搜索引擎之技術(shù)架構(gòu) 作為互聯(lián)網(wǎng)最具技術(shù)含量應(yīng)用之一的搜索引擎每天都在為幾十億的用戶服務(wù)。用戶除了知道在百度搜索框里輸入一個“蘋果”,點(diǎn)擊百度返回的頁面外,可能對搜索引擎就知之甚少了。但在用戶沒有看到結(jié)果之前,搜索引擎依靠著復(fù)雜的架構(gòu)和算法,搜集并處理了海量的數(shù)據(jù),同時還為用戶提供盡可能準(zhǔn)確的搜索信息。 接下來,我們重點(diǎn)看下非常宏觀層面的搜索引擎架構(gòu)。 搜索引擎是有許多技術(shù)模塊組成的,負(fù)責(zé)在不同階段對不同數(shù)據(jù)進(jìn)行技術(shù)處理,互相構(gòu)成了一個完成的技術(shù)架構(gòu),基本上這個架構(gòu)圖就可以涵蓋搜索引擎的大致工作了。 搜索引擎之技術(shù)架構(gòu) 為方便理解,我將這些技術(shù)模塊分為兩個階段: 第一階段是左側(cè)的兩列,發(fā)生在用戶輸入查詢詞前,也就是搜索引擎自己在默默做的事情; 第二階段是右側(cè)的兩側(cè),發(fā)生在用戶輸入查詢詞和返回搜索結(jié)果的幾毫秒內(nèi)。 1)第一階段,搜索引擎一直在默默做的事情。 首先,搜索引擎使用爬蟲將互聯(lián)網(wǎng)上的網(wǎng)頁獲取并下載到本地,可以理解為將各個網(wǎng)頁以word文檔的形式下載到了本地電腦里。 此步驟類似于,超市的采購員采購回來許多許多商品。 其次,有相關(guān)程序?qū)ο螺d的數(shù)據(jù)進(jìn)行去重處理。因?yàn)橄螺d了許多許多文檔,存在很多文檔完全一致的情況,因此需要對這些文檔進(jìn)行去重操作,保證每個文檔都包含第一無二的內(nèi)容。 此步驟類似于,超市的理貨員對每個商品貼上獨(dú)一無二的價格標(biāo)簽。 再次,有相關(guān)程序?qū)@些去重后的文檔進(jìn)行解析操作,即抽取出文檔的內(nèi)容和鏈接。根據(jù)某些復(fù)雜的算法,對文字進(jìn)行一定的操作,構(gòu)成一個倒排索引表。同時,也根據(jù)某些復(fù)雜的算法,對鏈接進(jìn)行一定的操作,構(gòu)成了一個鏈接關(guān)系。 此步驟類似于,超市的理貨員記住商品價格標(biāo)簽上的主要內(nèi)容,如這個商品是食品還是衣物等。 最后,對已經(jīng)進(jìn)行過的所有操作,重點(diǎn)是構(gòu)成好的倒排索引表及鏈接關(guān)系,進(jìn)行反作弊的處理,比如剔除違法犯罪內(nèi)容、刪除壞網(wǎng)頁等,類似超市貨品上架之前的檢查一樣。 此步驟類似于,超市的理貨員記住商品之間的推薦關(guān)系,比如蘋果是和梨放一起還是和口紅放一起等。 到此為止,第一階段就結(jié)束了,當(dāng)然真實(shí)的搜索和處理過程比這復(fù)雜得多,接下來,就進(jìn)入第二階段,用戶在搜索框輸入查詢詞到搜索結(jié)果展示之前的幾毫秒的階段了。 2)第二階段,用戶輸入查詢詞之后發(fā)生的事情。 首先,用戶在搜索框輸入了“蘋果”。 此步驟類似于,用戶進(jìn)入超市跟售貨員說要買“蘋果”一樣(前提,用戶不需要進(jìn)入超市自己找要買的東西)。 其次,搜索引擎在Cache系統(tǒng)(即緩存系統(tǒng))趕緊查一下有沒有蘋果。緩存系統(tǒng)可以理解為用戶搜得很多,放在一個單獨(dú)容易取到的地方。 此步驟類似于,超市售貨員在離得最近的“最暢銷貨架”上找一下有沒有“蘋果”。如果有“蘋果”,就直接給用戶。如果沒有,就趕緊跑進(jìn)超市內(nèi)部去找,則進(jìn)入下一步驟。 再次,搜索引擎沒有再緩存系統(tǒng)中找到用戶要查的詞語,就會根據(jù)查詢詞在第一階段中處理出來的內(nèi)容和鏈接進(jìn)行分析,找到可能是用戶想要的信息。 此步驟類似于,超市售貨員迅速地翻各個商品的價格標(biāo)簽,找到跟“蘋果”相關(guān)的所有商品。 最后,搜索引擎在幾毫秒內(nèi)找到的數(shù)以億記的且都可能相關(guān)的網(wǎng)頁,根據(jù)一定的相關(guān)性算法,把最可能是用戶想要的頁面展示在最前面,之后按照相關(guān)性進(jìn)行排序,依次展示。 此步驟類似于,超市售貨員拿著幾億的標(biāo)簽,最該給用戶的是能吃的“蘋果”呢?是“蘋果”手機(jī)呢?還是“蘋果”形狀的抱枕呢?當(dāng)然售貨員會根據(jù)已有經(jīng)驗(yàn)給用戶推薦出相關(guān)性最大的商品。 以上,展示了搜索引擎的大致技術(shù)架構(gòu),輔以超市的例子,希望大家能夠理解搜索引擎在用戶“看不見”的背后都做了什么,我們用戶也就能理解互聯(lián)網(wǎng)技術(shù)的偉大之處了,互聯(lián)網(wǎng)人也對搜索巨頭Google報以崇拜之情了。 之后,我會陸續(xù)給大家更新搜索引擎系列文章,展開講述在不同階段不同步驟,搜索引擎做了什么,為什么做,怎么做的。 感謝關(guān)注“產(chǎn)品美景”,歡迎隨時交流想法~ |
|