亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

我們常說(shuō)阿里的運(yùn)營(yíng),騰訊的產(chǎn)品,百度的技術(shù)。這背后是對(duì)百度技術(shù)的肯定,我們都知道,百度是靠搜索引擎起家,搜索引擎與電商與社交產(chǎn)品有明顯的區(qū)別,有著非常強(qiáng)的技術(shù)驅(qū)動(dòng)性。今天我們就來(lái)學(xué)習(xí)學(xué)習(xí),搜索引擎大致是怎么組成的,背后的算法與數(shù)據(jù)結(jié)構(gòu)是怎么樣的,作為一個(gè)程序員,我們能否實(shí)現(xiàn)自己簡(jiǎn)單的搜索引擎呢?

一個(gè)經(jīng)典的搜索引擎,無(wú)論是谷歌、百度、微信的搜一搜還是淘寶的搜索,都離不開(kāi)下面這這個(gè)基本過(guò)程,收集、分析、索引、查詢。我們今天一個(gè)一個(gè)來(lái)介紹這背后的經(jīng)典算法與數(shù)據(jù)結(jié)構(gòu)。

 

 

 

收集

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

分析

程序員們都知道,在網(wǎng)頁(yè)上我們雖然能看到豐富多彩的文案與圖片,背后都是html格式的代碼,我們需要去掉這些格式,才能獲取到真實(shí)的文本。那么,如何在一個(gè)HTML文件中,去掉各種標(biāo)簽?zāi)兀孔詈?jiǎn)單的,便是文本匹配,為了加快匹配的速度,通常我們會(huì)常用AC自動(dòng)機(jī)等多模文本匹配算法進(jìn)行優(yōu)化,可以快速的去掉HTML頁(yè)面上的各種標(biāo)簽。

索引

那么多的網(wǎng)頁(yè),我們查詢的時(shí)候,不可能每一個(gè)網(wǎng)頁(yè)都去遍歷,找到是否包含這個(gè)關(guān)鍵字。通常,我們采用的一個(gè)技術(shù),便是倒排索引,什么是倒排索引的,最簡(jiǎn)單來(lái)說(shuō),就是記錄每一個(gè)單詞,在哪里出現(xiàn)過(guò)。舉個(gè)簡(jiǎn)單例子,文章1的內(nèi)容包含了“我和我的祖國(guó),一刻都不能分割”,文章2的內(nèi)容包含了“祝偉大祖國(guó)70周年生日快樂(lè),繁榮富強(qiáng)”,文章3包含了“國(guó)慶節(jié)要放假了,程序員可以休息了”。那么,單詞“祖國(guó)”的倒排索引上面就會(huì)有1,2表示,在第1,2號(hào)文章上出現(xiàn)過(guò),單詞“程序員”的倒排索引是3,表示在第3號(hào)文件出現(xiàn)過(guò)。

算法與數(shù)據(jù)結(jié)構(gòu)之美,搜索引擎中的算法與數(shù)據(jù)結(jié)構(gòu)你知多少?

 

查詢

當(dāng)我們用關(guān)鍵字進(jìn)行查詢的時(shí)候,我們首先去索引上面查詢這個(gè)單詞在哪些文章上面出現(xiàn)過(guò)。緊接著,便是排序,排序是搜索引擎一個(gè)非常牛逼的技術(shù),那么多的文章,一個(gè)關(guān)鍵字可能包含了幾百萬(wàn)的文章,怎么進(jìn)行排序的呢?有幾種非常簡(jiǎn)單的方法,例如關(guān)鍵詞出現(xiàn)的次數(shù),越多說(shuō)明權(quán)重越高,或者是創(chuàng)建的時(shí)間,越新權(quán)重越高,當(dāng)然也有一些其他的排序方法,例如競(jìng)價(jià)等等。

現(xiàn)代的搜索引擎,一般還會(huì)用AI進(jìn)行武裝,我們一般用深度學(xué)習(xí),對(duì)搜索結(jié)果去建立神經(jīng)網(wǎng)絡(luò),如果用戶點(diǎn)擊了,就說(shuō)明搜索出來(lái)的結(jié)果用戶更喜歡,從而達(dá)到不斷訓(xùn)練,越來(lái)越聰明的作用。

算法與數(shù)據(jù)結(jié)構(gòu)之美,搜索引擎中的算法與數(shù)據(jù)結(jié)構(gòu)你知多少?

 

總結(jié)

好了,今天我們就分享到這里,有興趣的程序員同學(xué),可以嘗試自己實(shí)現(xiàn)一個(gè)簡(jiǎn)單的搜索引擎。相信你會(huì)對(duì)其中的算法與數(shù)據(jù)結(jié)構(gòu)有更深一步的認(rèn)識(shí)。歡迎大家關(guān)注我,共同學(xué)習(xí),共同進(jìn)步。大家的支持是我繼續(xù)嘮嗑的動(dòng)力。同名公眾號(hào)(沙茶敏碎碎念)

分享到:
標(biāo)簽:搜索引擎
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定