日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

我們常說阿里的運營,騰訊的產品,百度的技術。這背后是對百度技術的肯定,我們都知道,百度是靠搜索引擎起家,搜索引擎與電商與社交產品有明顯的區別,有著非常強的技術驅動性。今天我們就來學習學習,搜索引擎大致是怎么組成的,背后的算法與數據結構是怎么樣的,作為一個程序員,我們能否實現自己簡單的搜索引擎呢?

一個經典的搜索引擎,無論是谷歌、百度、微信的搜一搜還是淘寶的搜索,都離不開下面這這個基本過程,收集、分析、索引、查詢。我們今天一個一個來介紹這背后的經典算法與數據結構。

 

 

 

收集

首先是收集,最常見的便是爬蟲,從各個網站中爬取對應的資料,根據網站的爬取順序,我們常常有深度優先搜索,廣度優先搜索等不同的爬取策略,為了避免爬取重復的網站,我們可能需要對網站的地址進行判重,常用的,我們可以使用布隆過濾器,可以做到非常高效的網站去重。當然,現在有一些搜索引擎也是不需要爬蟲的,像淘寶的商品搜索,商家每發布新的產品,或者用戶發表新的評論,都會發布異步的消息隊列,由搜索引擎訂閱并收集。那么多的基礎元數據,我們通常需要給他們一個編號,有人說可以用MySQL存儲,用自增主鍵id,那樣一個表會非常大,要知道,網絡上的網頁何止千千萬萬,我們通常采用NoSql進行存儲,同時我們也需要ID生成分配器,給每一個資源一個獨立的ID。

分析

程序員們都知道,在網頁上我們雖然能看到豐富多彩的文案與圖片,背后都是html格式的代碼,我們需要去掉這些格式,才能獲取到真實的文本。那么,如何在一個HTML文件中,去掉各種標簽呢?最簡單的,便是文本匹配,為了加快匹配的速度,通常我們會常用AC自動機等多模文本匹配算法進行優化,可以快速的去掉HTML頁面上的各種標簽。

索引

那么多的網頁,我們查詢的時候,不可能每一個網頁都去遍歷,找到是否包含這個關鍵字。通常,我們采用的一個技術,便是倒排索引,什么是倒排索引的,最簡單來說,就是記錄每一個單詞,在哪里出現過。舉個簡單例子,文章1的內容包含了“我和我的祖國,一刻都不能分割”,文章2的內容包含了“祝偉大祖國70周年生日快樂,繁榮富強”,文章3包含了“國慶節要放假了,程序員可以休息了”。那么,單詞“祖國”的倒排索引上面就會有1,2表示,在第1,2號文章上出現過,單詞“程序員”的倒排索引是3,表示在第3號文件出現過。

算法與數據結構之美,搜索引擎中的算法與數據結構你知多少?

 

查詢

當我們用關鍵字進行查詢的時候,我們首先去索引上面查詢這個單詞在哪些文章上面出現過。緊接著,便是排序,排序是搜索引擎一個非常牛逼的技術,那么多的文章,一個關鍵字可能包含了幾百萬的文章,怎么進行排序的呢?有幾種非常簡單的方法,例如關鍵詞出現的次數,越多說明權重越高,或者是創建的時間,越新權重越高,當然也有一些其他的排序方法,例如競價等等。

現代的搜索引擎,一般還會用AI進行武裝,我們一般用深度學習,對搜索結果去建立神經網絡,如果用戶點擊了,就說明搜索出來的結果用戶更喜歡,從而達到不斷訓練,越來越聰明的作用。

算法與數據結構之美,搜索引擎中的算法與數據結構你知多少?

 

總結

好了,今天我們就分享到這里,有興趣的程序員同學,可以嘗試自己實現一個簡單的搜索引擎。相信你會對其中的算法與數據結構有更深一步的認識。歡迎大家關注我,共同學習,共同進步。大家的支持是我繼續嘮嗑的動力。同名公眾號(沙茶敏碎碎念)

分享到:
標簽:搜索引擎
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定