1. 程式人生 > >百度,google等搜尋引擎的工作原理是什麼?

百度,google等搜尋引擎的工作原理是什麼?

一、搜尋引擎的分類 
      獲得網站網頁資料,能夠建立資料庫並提供查詢的系統,我們都可以把它叫做搜尋引擎。按照工作原理的不同,可以把它們分為兩個基本類別:全文搜尋引擎(FullText Search Engine)和分類目錄Directory)。 
     全文搜尋引擎的資料庫是依靠一個叫“網路機器人(Spider)”或叫“網路蜘蛛(crawlers)”的軟體,通過網路上的各種連結自動獲取大量網頁資訊內容,並按以定的規則分析整理形成的。Google、百度都是比較典型的全文搜尋引擎系統。 
      分類目錄則是通過人工的方式收集整理網站資料形成資料庫的,比如雅虎中國以及國內的搜狐、新浪、網易分類目錄。另外,在網上的一些導航站點,也可以歸屬為原始的分類目錄,比如“網址之家”。 

       全文搜尋引擎和分類目錄在使用上各有長短。全文搜尋引擎因為依靠軟體進行,所以資料庫的容量非常龐大,但是,它的查詢結果往往不夠準確;分類目錄依靠人工收集和整理網站,能夠提供更為準確的查詢結果,但收集的內容卻非常有限。為了取長補短,現在的很多搜尋引擎,都同時提供這兩類查詢,一般對全文搜尋引擎的查詢稱為搜尋“所有網站”或“全部網站”,比如Google的全文搜尋(http://www.google.com/intl/zh-CN/);把對分類目錄的查詢稱為搜尋“分類目錄”或搜尋“分類網站”,比如新浪搜尋和雅虎中國搜尋(http://cn.search.yahoo.com/dirsrch/)。 
在網上,對這兩類搜尋引擎進行整合,還產生了其它的搜尋服務,在這裡,我們權且也把它們稱作搜尋引擎,主要有這兩類: 

⒈元搜尋引擎(META Search Engine)。這類搜尋引擎一般都沒有自己網路機器人及資料庫,它們的搜尋結果是通過呼叫、控制和優化其它多個獨立搜尋引擎的搜尋結果並以統一的格式在同一介面集中顯示。元搜尋引擎雖沒有“網路機器人”或“網路蜘蛛”,也無獨立的索引資料庫,但在檢索請求提交、檢索介面代理和檢索結果顯示等方面,均有自己研發的特色元搜尋技術。比如“metaFisher元搜尋引擎” 
(http://www.hsfz.net/fish/),它就呼叫和整合了Google、Yahoo、AlltheWeb、百度和OpenFind等多家搜尋引擎的資料。 
⒉整合搜尋引擎(All-in-One Search Page)。整合搜尋引擎是通過網路技術,在一個網頁上鍊接很多個獨立搜尋引擎,查詢時,點選或指定搜尋引擎,一次輸入,多個搜尋引擎同時查詢,搜尋結果由各搜尋引擎分別以不同頁面顯示,比如“網際瑞士軍刀”(http://free.okey.net/%7Efree/search1.htm)。 
   
二、搜尋引擎的工作原理 
全文搜尋引擎的“網路機器人”或“網路蜘蛛”是一種網路上的軟體,它遍歷Web空間,能夠掃描一定IP地址範圍內的網站,並沿著網路上的連結從一個網頁到另一個網頁,從一個網站到另一個網站採集網頁資料。它為保證採集的資料最新,還會回訪已抓取過的網頁。網路機器人或網路蜘蛛採集的網頁,還要有其它程式進行分析,根據一定的相關度演算法進行大量的計算建立網頁索引,才能新增到索引資料庫中。我們平時看到的全文搜尋引擎,實際上只是一個搜尋引擎系統的檢索介面,當你輸入關鍵詞進行查詢時,搜尋引擎會從龐大的資料庫中找到符合該關鍵詞的所有相關網頁的索引,並按一定的排名規則呈現給我們。不同的搜尋引擎,網頁索引資料庫不同,排名規則也不盡相同,所以,當我們以同一關鍵詞用不同的搜尋引擎查詢時,搜尋結果也就不盡相同。 
       和全文搜尋引擎一樣,分類目錄的整個工作過程也同樣分為收集資訊、分析資訊和查詢資訊三部分,只不過分類目錄的收集、分析資訊兩部分主要依靠人工完成。分類目錄一般都有專門的編輯人員,負責收集網站的資訊。隨著收錄站點的增多,現在一般都是由站點管理者遞交自己的網站資訊給分類目錄,然後由分類目錄的編輯人員稽核遞交的網站,以決定是否收錄該站點。如果該站點稽核通過,分類目錄的編輯人員還需要分析該站點的內容,並將該站點放在相應的類別和目錄中。所有這些收錄的站點同樣被存放在一個“索引資料庫”中。使用者在查詢資訊時,可以選擇按照關鍵詞搜尋,也可按分類目錄逐層查詢。如以關鍵詞搜尋,返回的結果跟全文搜尋引擎一樣,也是根據資訊關聯程度排列網站。需要注意的是,分類目錄的關鍵詞查詢只能在網站的名稱、網址、簡介等內容中進行,它的查詢結果也只是被收錄網站首頁的URL地址,而不是具體的頁面。分類目錄就像一個電話號碼薄一樣,按照各個網站的性質,把其網址分門別類排在一起,大類下面套著小類,一直到各個網站的詳細地址,一般還會提供各個網站的內容簡介,使用者不使用關鍵詞也可進行查詢,只要找到相關目錄,就完全可以找到相關的網站(注意:是相關的網站,而不是這個網站上某個網頁的內容,某一目錄中網站的排名一般是按照標題字母的先後順序或者收錄的時間順序決定的)。 
搜尋引擎並不真正搜尋網際網路,它搜尋的實際上是預先整理好的網頁索引資料庫。 
        真正意義上的搜尋引擎,通常指的是收集了因特網上幾千萬到幾十億個網頁並對網頁中的每一個詞(即關鍵詞)進行索引,建立索引資料庫的全文搜尋引擎。當用戶查詢某個關鍵詞的時候,所有在頁面內容中包含了該關鍵詞的網頁都將作為搜尋結果被搜出來。在經過複雜的演算法進行排序後,這些結果將按照與搜尋關鍵詞的相關度高低,依次排列。 
        現在的搜尋引擎已普遍使用超鏈分析技術,除了分析索引網頁本身的內容,還分析索引所有指向該網頁的連結的URL、AnchorText、甚至連結周圍的文字。所以,有時候,即使某個網頁A中並沒有某個詞比如“惡魔撒旦”,但如果有別的網頁B用連結“惡魔撒旦”指向這個網頁A,那麼使用者搜尋“惡魔撒旦”時也能找到網頁A。而且,如果有越多網頁(C、D、E、F……)用名為“惡魔撒旦”的連結指向這個網頁A,或者給出這個連結的源網頁(B、C、D、E、F……)越優秀,那麼網頁A在使用者搜尋“惡魔撒旦”時也會被認為更相關,排序也會越靠前。 
搜尋引擎的原理,可以看做三步:從網際網路上抓取網頁→建立索引資料庫→在索引資料庫中搜索排序。 
1.從網際網路上抓取網頁 
     利用能夠從網際網路上自動收集網頁的Spider系統程式,自動訪問網際網路,並沿著任何網頁中的所有URL爬到其它網頁,重複這過程,並把爬過的所有網頁收集回來。 
2.建立索引資料庫 
     由分析索引系統程式對收集回來的網頁進行分析,提取相關網頁資訊(包括網頁所在URL、編碼型別、頁面內容包含的關鍵詞、關鍵詞位置、生成時間、大小、與其它網頁的連結關係等),根據一定的相關度演算法進行大量複雜計算,得到每一個網頁針對頁面內容中及超鏈中每一個關鍵詞的相關度(或重要性),然後用這些相關資訊建立網頁索引資料庫。 
3.在索引資料庫中搜索排序 
      當用戶輸入關鍵詞搜尋後,由搜尋系統程式從網頁索引資料庫中找到符合該關鍵詞的所有相關網頁。因為所有相關網頁針對該關鍵詞的相關度早已算好,所以只需按照現成的相關度數值排序,相關度越高,排名越靠前。 
最後,由頁面生成系統將搜尋結果的連結地址和頁面內容摘要等內容組織起來返回給使用者。 
搜尋引擎的Spider一般要定期重新訪問所有網頁(各搜尋引擎的週期不同,可能是幾天、幾周或幾月,也可能對不同重要性的網頁有不同的更新頻率),更新網頁索引資料庫,以反映出網頁內容的更新情況,增加新的網頁資訊,去除死連結,並根據網頁內容和連結關係的變化重新排序。這樣,網頁的具體內容和變化情況就會反映到使用者查詢的結果中。 
      網際網路雖然只有一個,但各搜尋引擎的能力和偏好不同,所以抓取的網頁各不相同,排序演算法也各不相同。大型搜尋引擎的資料庫儲存了網際網路上幾億至幾十億的網頁索引,資料量達到幾千G甚至幾萬G。但即使最大的搜尋引擎建立超過二十億網頁的索引資料庫,也只能佔到網際網路上普通網頁的不到30%,不同搜尋引擎之間的網頁資料重疊率一般在70%以下。我們使用不同搜尋引擎的重要原因,就是因為它們能分別搜尋到不同的內容。而網際網路上有更大量的內容,是搜尋引擎無法抓取索引的,也是我們無法用搜索引擎搜尋到的。 
     你心裡應該有這個概念:搜尋引擎只能搜到它網頁索引資料庫裡儲存的內容。你也應該有這個概念:如果搜尋引擎的網頁索引資料庫裡應該有而你沒有搜出來,那是你的能力問題,學習搜尋技巧可以大幅度提高你的搜尋能力。

相關推薦

google搜尋引擎工作原理是什麼?

一、搜尋引擎的分類       獲得網站網頁資料,能夠建立資料庫並提供查詢的系統,我們都可以把它叫做搜尋引擎。按照工作原理的不同,可以把它們分為兩個基本類別:全文搜尋引擎(FullText Search Engine)和分類目錄Directory)。      全文搜尋引擎

2018秋招運維面試題彙總(新浪微博小米vipkid)

小白的運維面試經驗分享: 一.百度一面: 第一次面試,是電話面試,當時正在睡覺,接到電話趕緊去洗把臉清醒了一下,這次電話面試大概65分鐘吧,問的東西很多很多,基本像網路,資料結構,C,C++,運維相關知識都問到了,感覺還是很有水平的一個面試哈哈哈: 1.做一下自

c#+jquery-autocomplete實現類似Google模糊查詢

由於現有系統有一個介面顯示不友好,因此寫單獨重寫了這個頁面。期中有個要查詢庫位的功能。閒著沒事做成類似百度,Google模糊查詢的效果了 中英文都可以。 效果圖: JS程式碼如下: 首先引用 css js 可到官方網站去下載 點選開啟連結   <link hr

高德Google地圖定位偏移以及座標系轉換

一。在進行地圖開發過程中,我們一般能接觸到以下三種類型的地圖座標系: 1.WGS-84原始座標系,一般用國際GPS紀錄儀記錄下來的經緯度,通過GPS定位拿到的原始經緯度,Google和高德地圖定位的的經緯度(國外)都是基於WGS-84座標系的;但是在國內是不允許直接用WGS

最新搜尋引擎工作原理

       百度以及其它搜尋引擎的工作原理,其實百度每年都在做大的更新,這也是SEOER大家經常討論過很多的事情,但隨著科技的進步、網際網路業的發展,百度自身搜尋引擎發生巨大的變化,並且這些變化都是飛快的。下面照明網分享一下SEO主要從百度搜索引擎工作原理的:抓取建庫;檢索排序;外部投票;結果展現,這四個

2017年秋季校招前端面經(騰訊網易華為樂視

優勢 end 曾經 agg line 網上 秋季 期望 概念 華為實習生面試(人生第一面,4月份):那時候學了前端兩月有余,很多傻傻不知道。 面試官人蠻好的,問了很多我都不知道,所以什麽方面都問了一些,不過最後還是說了句,算你過了。 技術面:   自我介紹語言混,沒有邏輯

Linux下安裝QQ網盤win系軟體的通用方法

安裝deepin-wine環境 git clone https://github.com/wszqkzqk/deepin-wine-ubuntu 解壓到本地資料夾,開啟資料夾後開啟終端 sudo sh ./install.sh 安裝 安裝deepin-wine應用容器

阿里騰訊網際網路公司Java開發的最新招聘標準

金九銀十的跳槽熱潮已經過去了,在這兩個月的跳槽的旺季中,作為網際網路行業的三大巨頭,百度、阿里巴巴、騰訊對於網際網路人才有很大的吸引力,他們的員工也是眾多網際網路同行覬覦的資深工程師、管理者人選。 下面我總結了進入這三家公司你所需掌握的技能: 阿里巴巴篇 紮實的計算機專業基礎,包括演算法

google瀏覽器如何將設定為預設搜尋引擎

google瀏覽器預設的搜尋引擎是google,我們在搜尋一個東西時會很慢。那麼如何將谷歌瀏覽器設定為百度引擎呢。 如圖所示首先點選瀏覽器X號下面的三個點、 然後點選設定 然後再在上邊的搜尋框中輸入搜尋   如圖點選管理搜尋引擎如圖點選百度後邊的三個點     &

2018 Android面經分享(京東陌陌58到家知名公司)

美團,京東,陌陌,58到家,科大訊飛,百度,luckin coffee面試總結 一.引言 面對著金三銀四的黃金時段,耐不住寂寞的我也準備了下跳槽,目標是二線網際網路以上公司。,下面總結和分享下最近面試的幾家公司的面試題和麵試經驗。 二.面試經

2018年 阿里騰訊 公司:對於Java開發者的招聘標準

 金三銀四的跳槽熱潮即將過去,在這兩個月的跳槽的旺季中,作為網際網路行業的三大巨頭,百度、阿里巴巴、騰訊對於網際網路人才有很大的吸引力,他們的員工也是眾多網際網路同行覬覦的資深工程師、管理者人選。下面我總結了進入這三家公司你所需掌握的技能阿里巴巴篇紮實的計算機專業基礎,包括演算法和資料結構,作業系統,計算機網

大公司都有哪些開源專案~~~阿里騰訊360新浪網易小米

作者:毒逆天正文:紅色字型是現階段比較火的----------------------------------------------------------------------------------------------------------------1.MyS

中國開源專案哪家強?看看阿里騰訊360新浪網易小米都開源了什麼

奇虎360 1.MySQL中間層 Atlas Atlas是由 Qihoo 360, Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的資料中間層專案。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前

android map (google map , 高德 )在路線 上畫箭頭

 android  map  (google map ,百度 ,高德 )在路線 上畫箭頭! 其實分為2步驟: 算角度,畫箭頭marker ,marker 畫在路線兩個點的中點 public void drawArrow(List<LatLng> list) {

中國開源專案哪家強?看看阿里騰訊360都開...

奇虎360 開源github地址:https://github.com/Qihoo360 1.MySQL中間層 Atlas Atlas是由 Qihoo 360, Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的資料中間層專案。它

騰訊阿里大型網際網路公司年終獎發多少?

年後又是跳槽季,這裡列出一些公司的年終福利,大家提前有所瞭解,方便年後跳槽選擇。也歡迎大家留言說下你們公司的年終福利。 百度 年終獎:百度offer上寫得是14.6個月薪水,年中發0.6個月,年底發2個月,年終獎是要算上公司績效和個人績效的,所以也不是固定的

對比了下Google差別居然這麼大

據說Google要入華(真的嗎?),程式設計師的福音真的來了嗎?如果Google能入成,那自然要拍手慶賀,因為,Google搜尋和百度搜索,使用效果對程式設計師來講差別真的很大。 舉個簡單例子,我們搜一下“angularjs”。下面是百度的結果: 看見沒

對TOP冷門域名冷淡

便宜 搜索引擎 垃圾 http 尋找 索引 title 新網站 分享 新網站上線有半年多了,更新少也沒怎麽優化,主要做些會員教程之類,沒怎麽留意收錄情況,最近想把優化做起來,學習下SEO。查詢了下網站收錄情況,我去,半年多雖然少更新,但還是有更新的,文章也不少,不至於百度才

Android 仿微信調用第三方應用導航(高德、騰訊)

detail decorview fcm onclick api 描述 log def repr 實現目標 先來一張微信功能截圖看看要做什麽 其實就是有一個目的地,點擊目的地的時候彈出可選擇的應用進行導航。 大腦動一下,要實現這個功能應該大體分成兩步: 底部彈出可選的地

夢裏尋她千Bug卻在隔壁老張處

one 調試 簡單 打電話 有用 gpo 不定 告警 自己 程序員與 Bug 是一對矛盾的存在,程序員既要在解決 Bug 中獲得成就感,同時也討厭 Bug 本身的存在。“程序不息,Bug 不止”,程序員在與 Bug 的鬥爭中,也有很多有趣的事情發生,我們整理了一些程序員在調