十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇內(nèi)容介紹了“搜索引擎工作原理是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出邗江免費(fèi)做網(wǎng)站回饋大家。
現(xiàn)代意義上的搜索引擎的祖先,是1990年由蒙特利爾大學(xué)學(xué)生Alan Emtage發(fā)明的Archie。即便沒有英特網(wǎng),網(wǎng)絡(luò)中文件傳輸還是相當(dāng)頻繁的,而且由于大量的文件散布在各個分散的FTP主機(jī)中,查詢起來非常不便,因此Alan Emtage想到了開發(fā)一個可以以文件名查找文件的系統(tǒng),于是便有了Archie。Archie工作原理與現(xiàn)在的搜索引擎已經(jīng)很接近,它依靠腳本程序自動搜索網(wǎng)上的文件,然后對有關(guān)信息進(jìn)行索引,供使用者以一定的表達(dá)式查詢。
互聯(lián)網(wǎng)興起后,需要能夠監(jiān)控的工具。世界上第一個用于監(jiān)測互聯(lián)網(wǎng)發(fā)展規(guī)模的“機(jī)器人”程序是Matthew Gray開發(fā)的World wide Web Wanderer,剛開始它只用來統(tǒng)計互聯(lián)網(wǎng)上的服務(wù)器數(shù)量,后來則發(fā)展為能夠檢索網(wǎng)站域名。
隨著互聯(lián)網(wǎng)的迅速發(fā)展,每天都會新增大量的網(wǎng)站、網(wǎng)頁,檢索所有新出現(xiàn)的網(wǎng)頁變得越來越困難,因此,在Matthew Gray的Wanderer基礎(chǔ)上,一些編程者將傳統(tǒng)的“蜘蛛”程序工作原理作了些改進(jìn)?,F(xiàn)代搜索引擎都是以此為基礎(chǔ)發(fā)展的。
全文搜索引擎
當(dāng)前主流的是全文搜索引擎,較為典型的代表是Google、百度。全文搜索引擎是指通過從互聯(lián)網(wǎng)上提取的各個網(wǎng)站的信息(以網(wǎng)頁文字為主),保存在自己建立的數(shù)據(jù)庫中。用戶發(fā)起檢索請求后,系統(tǒng)檢索與用戶查詢條件匹配的相關(guān)記錄,然后按一定的排列順序?qū)⒔Y(jié)果返回給用戶。從搜索結(jié)果來源的角度,全文搜索引擎又可細(xì)分為兩種,一種是擁有自己的檢索程序(Indexer),俗稱“蜘蛛”(Spider)程序或“機(jī)器人”(Robot)程序,并自建網(wǎng)頁數(shù)據(jù)庫,搜索結(jié)果直接從自身的數(shù)據(jù)存儲層中調(diào)用;另一種則是租用其他引擎的數(shù)據(jù)庫,并按自定的格式排列搜索結(jié)果,如Lycos引擎。
目錄索引類搜索引擎
雖然有搜索功能,但嚴(yán)格意義上不能稱為真正的搜索引擎,只是按目錄分類的網(wǎng)站鏈接列表而已。用戶完全可以按照分類目錄找到所需要的信息,不依靠關(guān)鍵詞(Keywords)進(jìn)行查詢。目錄索引中最具代表性的莫過于大名鼎鼎的Yahoo、新浪分類目錄搜索。
元搜索引擎
元搜索引擎在接受用戶查詢請求時,同時在其他多個引擎上進(jìn)行搜索,并將結(jié)果返回給用戶。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的有搜星搜索引擎。在搜索結(jié)果排列方面,有的直接按來源引擎排列搜索結(jié)果,如Dogpile,有的則按自定的規(guī)則將結(jié)果重新排列組合,如Vivisimo。
搜索引擎產(chǎn)品雖然一般都只有一個輸入框,但是對于所提供的服務(wù),背后有很多不同業(yè)務(wù)引擎支撐,每個業(yè)務(wù)引擎又有很多不同的策略,每個策略又有很多模塊協(xié)同處理,及其復(fù)雜。
搜索引擎本身包含網(wǎng)頁抓取、網(wǎng)頁評價、反作弊、建庫、倒排索引、索引壓縮、在線檢索、ranking排序策略等等知識。
網(wǎng)絡(luò)爬蟲技術(shù)
網(wǎng)絡(luò)爬蟲技術(shù)指的是針對網(wǎng)絡(luò)數(shù)據(jù)的抓取。因為在網(wǎng)絡(luò)中抓取數(shù)據(jù)是具有關(guān)聯(lián)性的抓取,它就像是一只蜘蛛一樣在互聯(lián)網(wǎng)中爬來爬去,所以我們很形象地將其稱為是網(wǎng)絡(luò)爬蟲技術(shù)。網(wǎng)絡(luò)爬蟲也被稱為是網(wǎng)絡(luò)機(jī)器人或者是網(wǎng)絡(luò)追逐者。
網(wǎng)絡(luò)爬蟲獲取網(wǎng)頁信息的方式和我們平時使用瀏覽器訪問網(wǎng)頁的工作原理是完全一樣的,都是根據(jù)HTTP協(xié)議來獲取,其流程主要包括如下步驟:
1)連接DNS域名服務(wù)器,將待抓取的URL進(jìn)行域名解析(URL———>IP);
2)根據(jù)HTTP協(xié)議,發(fā)送HTTP請求來獲取網(wǎng)頁內(nèi)容。
一個完整的網(wǎng)絡(luò)爬蟲基礎(chǔ)框架如下圖所示:
整個架構(gòu)共有如下幾個過程:
1)需求方提供需要抓取的種子URL列表,根據(jù)提供的URL列表和相應(yīng)的優(yōu)先級,建立待抓取URL隊列(先來先抓);
2)根據(jù)待抓取URL隊列的排序進(jìn)行網(wǎng)頁抓取;
3)將獲取的網(wǎng)頁內(nèi)容和信息下載到本地的網(wǎng)頁庫,并建立已抓取URL列表(用于去重和判斷抓取的進(jìn)程);
4)將已抓取的網(wǎng)頁放入到待抓取的URL隊列中,進(jìn)行循環(huán)抓取操作;
索引
從用戶的角度來看,搜索的過程是通過關(guān)鍵字在某種資源中尋找特定的內(nèi)容的過程。而從計算機(jī)的角度來看,實現(xiàn)這個過程可以有兩種辦法。一是對所有資源逐個與關(guān)鍵字匹配,返回所有滿足匹配的內(nèi)容;二是如同字典一樣事先建立一個對應(yīng)表,把關(guān)鍵字與資源的內(nèi)容對應(yīng)起來,搜索時直接查找這個表即可。顯而易見,第二個辦法效率要高得多。建立這個對應(yīng)表事實上就是建立逆向索引(inverted index)的過程。
Lucene
Lucene是一個高性能的java全文檢索工具包,它使用的是倒排文件索引結(jié)構(gòu)。
全文檢索大體分兩個過程,索引創(chuàng)建 (Indexing) 和搜索索引 (Search) 。
索引創(chuàng)建:將現(xiàn)實世界中所有的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)提取信息,創(chuàng)建索引的過程。
搜索索引:就是得到用戶的查詢請求,搜索創(chuàng)建的索引,然后返回結(jié)果的過程。
非結(jié)構(gòu)化數(shù)據(jù)中所存儲的信息是每個文件包含哪些字符串,也即已知文件,欲求字符串相對容易,也即是從文件到字符串的映射。而我們想搜索的信息是哪些文件包含此字符串,也即已知字符串,欲求文件,也即從字符串到文件的映射。兩者恰恰相反。于是如果索引總能夠保存從字符串到文件的映射,則會大大提高搜索速度。
由于從字符串到文件的映射是文件到字符串映射的反向過程,于是保存這種信息的索引稱為反向索引 。
反向索引的所保存的信息一般如下:
假設(shè)我的文檔集合里面有100篇文檔,為了方便表示,我們?yōu)槲臋n編號從1到100,得到下面的結(jié)構(gòu)
每個字符串都指向包含此字符串的文檔(Document)鏈表,此文檔鏈表稱為倒排表 (Posting List)。
ElasticSearch
Elasticsearch是一個實時的分布式搜索和分析引擎,可以用于全文搜索,結(jié)構(gòu)化搜索以及分析,當(dāng)然你也可以將這三者進(jìn)行組合。Elasticsearch是一個建立在全文搜索引擎 Apache Lucene? 基礎(chǔ)上的搜索引擎,但是Lucene只是一個框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。Elasticsearch使用Lucene作為內(nèi)部引擎,但是在使用它做全文搜索時,只需要使用統(tǒng)一開發(fā)好的API即可,而不需要了解其背后復(fù)雜的Lucene的運(yùn)行原理。
Solr
Solr是一個基于Lucene的搜索引擎服務(wù)器。Solr 提供了層面搜索、命中醒目顯示并且支持多種輸出格式(包括 XML/XSLT 和 JSON 格式)。它易于安裝和配置,而且附帶了一個基于 HTTP 的管理界面。Solr已經(jīng)在眾多大型的網(wǎng)站中使用,較為成熟和穩(wěn)定。Solr 包裝并擴(kuò)展了 Lucene,所以Solr的基本上沿用了Lucene的相關(guān)術(shù)語。更重要的是,Solr 創(chuàng)建的索引與 Lucene 搜索引擎庫完全兼容。通過對Solr 進(jìn)行適當(dāng)?shù)呐渲茫承┣闆r下可能需要進(jìn)行編碼,Solr 可以閱讀和使用構(gòu)建到其他 Lucene 應(yīng)用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 創(chuàng)建的索引。
Hadoop
谷歌公司發(fā)布的一系列技術(shù)白皮書導(dǎo)致了Hadoop的誕生。Hadoop是一系列大數(shù)據(jù)處理工具,可以被用在大規(guī)模集群里。Hadoop目前已經(jīng)發(fā)展為一個生態(tài)體系,包括了很多組件,如圖所示。
Cloudera是一家將Hadoop技術(shù)用于搜索引擎的公司,用戶可以采用全文搜索方式檢索存儲在HDFS(Hadoop分布式文件系統(tǒng))和Apache HBase里面的數(shù)據(jù),再加上開源的搜索引擎Apache Solr,Cloudera提供了搜索功能,并結(jié)合Apache ZooKeeper進(jìn)行分布式處理的管理、索引切分以及高性能檢索。
PageRank
谷歌Pagerank算法基于隨機(jī)沖浪模型,基本思想是基于網(wǎng)站之間的相互投票,即我們常說的網(wǎng)站之間互相指向。如果判斷一個網(wǎng)站是高質(zhì)量站點(diǎn)時,那么該網(wǎng)站應(yīng)該是被很多高質(zhì)量的網(wǎng)站引用又或者是該網(wǎng)站引用了大量的高質(zhì)量權(quán)威的站點(diǎn)。
國際化
坦白說,Google雖然做得非常好,無論是技術(shù)還是產(chǎn)品設(shè)計,都很好。但是國際化確實是非常難做的,很多時候在細(xì)分領(lǐng)域還是會有其他搜索引擎的生存余地。例如在韓國,Naver是用戶的首選,它本身基于Yahoo的Overture系統(tǒng),廣告系統(tǒng)則是自己開發(fā)的。在捷克,我們則更多會使用Seznam。在瑞典,用戶更多選擇Eniro,它最初是瑞典的黃頁開發(fā)公司。
國際化、個性化搜索、匿名搜索,這些都是Google這樣的產(chǎn)品所不能完全覆蓋到的,事實上,也沒有任何一款產(chǎn)品可以適用于所有需求。
如果我們想要實現(xiàn)搜索引擎,最重要的是索引模塊和搜索模塊。索引模塊在不同的機(jī)器上各自進(jìn)行對資源的索引,并把索引文件統(tǒng)一傳輸?shù)酵粋€地方(可以是在遠(yuǎn)程服務(wù)器上,也可以是在本地)。搜索模塊則利用這些從多個索引模塊收集到的數(shù)據(jù)完成用戶的搜索請求。因此,我們可以理解兩個模塊之間相對是獨(dú)立的,它們之間的關(guān)聯(lián)不是通過代碼,而是通過索引和元數(shù)據(jù),如下圖所示。
對于索引的建立,我們需要注意性能問題。當(dāng)需要進(jìn)行索引的資源數(shù)目不多時,隔一定的時間進(jìn)行一次完全索引,不會占用很長時間。但在大型應(yīng)用中,資源的容量是巨大的,如果每次都進(jìn)行完整的索引,耗費(fèi)的時間會很驚人。我們可以通過跳過已經(jīng)索引的資源內(nèi)容,刪除已不存在的資源內(nèi)容的索引,并進(jìn)行增量索引來解決這個問題。這可能會涉及文件校驗和索引刪除等。另一方面,框架可以提供查詢緩存功能,提高查詢效率??蚣芸梢栽趦?nèi)存中建立一級緩存,并使用如 OSCache或 EHCache緩存框架,實現(xiàn)磁盤上的二級緩存。當(dāng)索引的內(nèi)容變化不頻繁時,使用查詢緩存更會明顯地提高查詢速度、降低資源消耗。
Sphinx
俄羅斯一家公司開源的全文搜索引擎軟件Sphinx,單一索引最大可包含1億條記錄,在1千萬條記錄情況下的查詢速度為0.x秒(毫秒級)。Sphinx創(chuàng)建索引的速度很快,根據(jù)網(wǎng)上的資料,Sphinx創(chuàng)建100萬條記錄的索引只需3~4分鐘,創(chuàng)建1000萬條記錄的索引可以在50分鐘內(nèi)完成,而只包含最新10萬條記錄的增量索引,重建一次只需幾十秒。
OmniFind
OmniFind 是 IBM 公司推出的企業(yè)級搜索解決方案。基于 UIMA (Unstructured Information Management Architecture) 技術(shù),它提供了強(qiáng)大的索引和獲取信息功能,支持巨大數(shù)量、多種類型的文檔資源(無論是結(jié)構(gòu)化還是非結(jié)構(gòu)化),并為 Lotus?Domino?和 WebSphere?Portal 專門進(jìn)行了優(yōu)化。
下一代搜索引擎
從技術(shù)和產(chǎn)品層面來看,接下來的幾年,甚至于更長時間,應(yīng)該沒有哪一家搜索引擎可以撼動谷歌的技術(shù)領(lǐng)先優(yōu)勢和產(chǎn)品地位。但是我們也可以發(fā)現(xiàn)一些現(xiàn)象,例如搜索假期租房的時候,人們更喜歡使用Airbub,而不是Google,這就是針對匿名/個性化搜索需求,這些需求是谷歌所不能完全覆蓋到的,畢竟原始數(shù)據(jù)并不在谷歌。我們可以看一個例子:DuckDuckGo。這是一款有別于大眾理解的搜索引擎,DuckDuckGo強(qiáng)調(diào)的是最佳答案,而不是更多的結(jié)果,所以每個人搜索相同關(guān)鍵詞時,返回的結(jié)果是不一樣的。
另一個方面技術(shù)趨勢是引入人工智能技術(shù)。在搜索體驗上,通過大量算法的引入,對用戶搜索的內(nèi)容和訪問偏好進(jìn)行分析,將標(biāo)題摘要進(jìn)行一定程度的優(yōu)化,以更容易理解的方式呈現(xiàn)給用戶。谷歌在搜索引擎AI化的步驟領(lǐng)先于其他廠商,2016年,隨著Amit Singhal被退休,John Giannandrea上位的交接班過程后,正式開啟了自身的革命。Giannandrea是深度神經(jīng)網(wǎng)絡(luò)、近似人腦中的神經(jīng)元網(wǎng)絡(luò)研究方面的頂級專家,通過分析海量級的數(shù)字?jǐn)?shù)據(jù),這些神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)排列方式,例如對圖片進(jìn)行分類、識別智能手機(jī)的語音控制等等,對應(yīng)也可以應(yīng)用在搜索引擎。因此,Singhal向Giannandrea的過渡,也意味著傳統(tǒng)人為干預(yù)的規(guī)則設(shè)置的搜索引擎向AI技術(shù)的過渡。引入深度學(xué)習(xí)技術(shù)之后的搜索引擎,通過不斷的模型訓(xùn)練,它會深層次地理解內(nèi)容,并為客戶提供更貼近實際需求的服務(wù),這才是它的有用,或者可怕之處。
Google搜索引擎的工作流程
貼個圖,自己感受下。
詳細(xì)點(diǎn)的 :
“搜索引擎工作原理是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!