搜索引擎
一門檢索技術
所謂搜索引擎,就是根據用戶需求與一定演演算法,運用特定策略從網際網路檢索出制定信息反饋給用戶的一門檢索技術。搜索引擎依託於多種技術,如網路爬蟲技術、檢索排序技術、網頁處理技術、大數據處理技術、自然語言處理技術等,為信息檢索用戶提供快速、高相關性的信息服務。搜索引擎技術的核心模塊一般包括爬蟲、索引、檢索和排序等,同時可添加其他一系列輔助模塊,以為用戶創造更好的網路使用環境。
搜索引擎是指根據一定的策略、運用特定的計算機程序從網際網路上採集信息,在對信息進行組織和處理后,為用戶提供檢索服務,將檢索的相關信息展示給用戶的系統。搜索引擎是工作於網際網路上的一門檢索技術,它旨在提高人們獲取搜集信息的速度,為人們提供更好的網路使用環境。從功能和原理上搜索引擎大致被分為全文搜索引擎、元搜索引擎、垂直搜索引擎和目錄搜索引擎等四大類。
搜索引擎發展到今天,基礎架構和演演算法在技術上都已經基本成型和成熟。搜索引擎已經發展成為根據一定的策略、運用特定的計算機程序從網際網路上搜集信息,在對信息進行組織和處理后,為用戶提供檢索服務,將用戶檢索相關的信息展示給用戶的系統。
搜索引擎是伴隨網際網路的發展而產生和發展的,網際網路已成為人們學習、工作和生活中不可缺少的平台,幾乎每個人上網都會使用搜索引擎。搜索引擎大致經歷了四代的發展:
1、第一代搜索引擎
1994年第一代真正基於網際網路的搜索引擎Lycos誕生,它以人工分類目錄為主,代錶廠商是Yahoo,特點是人工分類存放網站的各種目錄,用戶通過多種方式尋找網站,現在也還有這種方式存在。
2、第二代搜索引擎
隨著網路應用技術的發展,用戶開始希望對內容進行查找,出現了第二代搜索引擎,也就是利用關鍵字來查詢,最其代表性最成功的是Google,它建立在網頁鏈接分析技術的基礎上,使用關鍵字對網頁搜索,能夠覆益網際網路的大量網頁內容,該技術可以分析網頁的重要性后。將重要的結果呈現給用戶。
3、第三代搜索引擎
隨著網路信息的迅速膨脹,用戶希望能快速並且準確的查找到自己所要的信息,因此出現了第三代搜索引擎。相比前兩代第三代搜索引擎更加註重個性化、專業化智能化使用自動聚類、分類等人工智慧技術,採用區域智能識別及內容分析技術,利用人工介入,實現技術和人工的完美結合,增強了搜索引擎的查詢能力。第三代搜索引擎的代表是Google,它以寬廣的信息覆蓋率和優秀的搜索性能為發展搜索引擎的技術開創了嶄新的局面。
4、第四代搜索引
隨著信息多元化的快速發展,通用搜索引擎在目前的硬體條件下要得到網際網路上比較全面的信息是不太可能的,這時,用戶就需要數據全面、更新及時、分類細緻的面向主題搜索引擎,這種搜索引擎採用特徵提取和文本智能化等策略,相比前三代搜索引擎更準確有效,被稱為第四代搜索引擎。
搜索引擎的整個工作過程視為三個部分:一是蜘蛛在網際網路上爬行和抓取網頁信息,並存入原始網頁資料庫;二是對原始網頁資料庫中的信息進行提取和組織,並建立索引庫;三是根據用戶輸入的關鍵詞,快速找到相關文檔,並對找到的結果進行排序,並將查詢結果返回給用戶。以下對其工作原理做進一步分析:
一、網頁抓取
Spider每遇到一個新文檔,都要搜索其頁面的鏈接網頁。搜索引擎蜘蛛訪問web頁面的過程類似普通用戶使用瀏覽器訪問其頁面,即B/S模式。引擎蜘蛛先向頁面提出訪問請求,伺服器接受其訪問請求並返回HTML代碼后,把獲取的HTML代碼存入原始頁面資料庫。搜索引擎使用多個蜘蛛分佈爬行以提高爬行速度。搜索引擎的伺服器遍布世界各地,每一台伺服器都會派出多隻蜘蛛同時去抓取網頁。如何做到一個頁面只訪問一次,從而提高搜索引擎的工作效率。在抓取網頁時,搜索引擎會建立兩張不同的表,一張表記錄已經訪問過的網站,一張表記錄沒有訪問過的網站。當蜘蛛抓取某個外部鏈接頁面URL的時候,需把該網站的URL下載回來分析,當蜘蛛全部分析完這個URL后,將這個URL存入相應的表中,這時當另外的蜘蛛從其他的網站或頁面又發現了這個URL時,它會對比看看已訪問列表有沒有,如果有,蜘蛛會自動丟棄該URL,不再訪問。
二、預處理,建立索引
為了便於用戶在數萬億級別以上的原始網頁資料庫中快速便捷地找到搜索結果,搜索引擎必須將spider抓取的原始web頁面做預處理。網頁預處理最主要過程是為網頁建立全文索引,之後開始分析網頁,最後建立倒排文件(也稱反向索引)。Web頁面分析有以下步驟:判斷網頁類型,衡量其重要程度,豐富程度,對超鏈接進行分析,分詞,把重複網頁去掉。經過搜索引擎分析處理后,web網頁已經不再是原始的網頁頁面,而是濃縮成能反映頁面主題內容的、以詞為單位的文檔。數據索引中結構最複雜的是建立索引庫,索引又分為文檔索引和關鍵詞索引。每個網頁唯一的docID號是有文檔索引分配的,每個wordID出現的次數、位置、大小格式都可以根據docID號在網頁中檢索出來。最終形成wordID的數據列表。倒排索引形成過程是這樣的:搜索引擎用分詞系統將文檔自動切分成單詞序列-對每個單詞賦予唯一的單詞編號-記錄包含這個單詞的文檔。倒排索引是最簡單的,實用的倒排索引還需記載更多的信息。在單詞對應的倒排列表除了記錄文檔編號之外,單詞頻率信息也被記錄進去,便於以後計算查詢和文檔的相似度。
三、查詢服務
在搜索引擎界面輸入關鍵詞,點擊“搜索”按鈕之後,搜索引擎程序開始對搜索詞進行以下處理:分詞處理、根據情況對整合搜索是否需要啟動進行判斷、找出錯別字和拼寫中出現的錯誤、把停止詞去掉。接著搜索引擎程序便把包含搜索詞的相關網頁從索引資料庫中找出,而且對網頁進行排序,最後按照一定格式返回到“搜索”頁面。查詢服務最核心的部分是搜索結果排序,其決定了搜索引擎的量好壞及用戶滿意度。實際搜索結果排序的因子很多,但最主要的因素之一是網頁內容的相關度。影響相關性的主要因素包括如下五個方面。
(1)關鍵詞常用程度。經過分詞后的多個關鍵詞,對整個搜索字元串的意義貢獻並不相同。越常用的詞對搜索詞的意義貢獻越小,越不常用的詞對搜索詞的意義貢獻越大。常用詞發展到一定極限就是停止詞,對頁面不產生任何影響。所以搜索引擎用的詞加權係數高,常用詞加權係數低,排名演演算法更多關注的是不常用的詞。
(2)詞頻及密度。通常情況下,搜索詞的密度和其在頁面中出現的次數成正相關,次數越多,說明密度越大,頁面與搜索詞關係越密切。
(3)關鍵詞位置及形式。關鍵詞出現在比較重要的位置,如標題標籤、黑體、H1等,說明頁面與關鍵詞越相關。在索引庫的建立中提到的,頁面關鍵詞出現的格式和位置都被記錄在索引庫中。
(4)關鍵詞距離。關鍵詞被切分之後,如果匹配的出現,說明其與搜索詞相關程度越大,當“搜索引擎”在頁面上連續完整的出現或者“搜索”和“引擎”出現的時候距離比較近,都被認為其與搜索詞相關。
(5)鏈接分析及頁面權重。頁面之間的鏈接和權重關係也影響關鍵詞的相關性,其中最重要的是錨文字。頁面有越多以搜索詞為錨文字的導入鏈接,說明頁面的相關性越強。鏈接分析還包括了鏈接源頁面本身的主題、錨文字周圍的文字等。
搜索方式是搜索引擎的一個關鍵環節,大致可分為四種:全文搜索引擎、元搜索引擎、垂直搜索引擎和目錄搜索引擎,它們各有特點並適用於不同的搜索環境。所以,靈活選用搜索方式是提高搜索引擎性能的重要途徑。全文搜索引擎是利用爬蟲程序抓取網際網路上所有相關文章予以索引的搜索方式;元搜索引擎是基於多個搜索引擎結果並對之整合處理的二次搜索方式;垂直搜索引擎是對某一特定行業內數據進行快速檢索的一種專業搜索方式;目錄搜索引擎是依賴人工收集處理數據並置於分類目錄鏈接下的搜索方式。
一般網路用戶適用於全文搜索引擎。這種搜索方式方便、簡捷,並容易獲得所有相關信息。但搜索到的信息過於龐雜,因此用戶需要逐一瀏覽並甄別出所需信息。尤其在用戶沒有明確檢索意圖情況下,這種搜索方式非常有效。
元搜索引擎適用於廣泛、準確地收集信息。不同的全文搜索引擎由於其性能和信息反饋能力差異,導致其各有利弊。元搜索引擎的出現恰恰解決了這個問題,有利於各基本搜索引擎間的優勢互補。而且本搜索方式有利於對基本搜索方式進行全局控制,引導全文搜索引擎的持續改善。
垂直搜索引擎適用於有明確搜索意圖情況下進行檢索。例如,用戶購買機票、火車票、汽車票時,或想要瀏覽網路視頻資源時,都可以直接選用行業內專用搜索引擎,以準確、迅速獲得相關信息。
目錄搜索引擎是網站內部常用的檢索方式。本搜索方式旨在對網站內信息整合處理並分目錄呈現給用戶,但其缺點在於用戶需預先了解本網站的內容,並熟悉其主要模塊構成。總而觀之,目錄搜索方式的適應範圍非常有限,且需要較高的人工成本來支持維護。
1、信息抓取迅速。
在大數據時代,網路產生的信息浩如煙海,令人無所適從,難以得到自己需要的信息資源。在搜索引擎技術的幫助下,利用關鍵詞、高級語法等檢索方式就可以快速捕捉到相關度極高的匹配信息。
2、深入開展信息挖掘。
搜索引擎在捕獲用戶需求的信息的同時,還能對檢索的信息加以一定維度的分析,以引導其對信息的使用與認識。例如,用戶可以根據檢索到的信息條目判斷檢索對象的熱度,還可以根據檢索到的信息分佈給出高相關性的同類對象,還可以利用檢索到的信息智能化給出用戶解決方案,等等。
3、檢索內容的多樣化和廣泛性。
隨著搜索引擎技術的日益成熟,當代搜索引擎技術幾乎可以支持各種數據類型的檢索,例如自然語言、智能語言、機器語言等各種語言。目前,不僅視頻、音頻、圖像可以被檢索,而且人類面部特徵、指紋、特定動作等也可以被檢索到。可以想象,在未來幾乎一切數據類型都可能成為搜索引擎的檢索對象。
搜索引擎基本結構一般包括:搜索器、索引器、檢索器、用戶介面等四個功能模塊。
1、搜索器:
搜索器也叫網路蜘蛛,是搜索引擎用來爬行和抓取網頁的一個自動程序,在系統後台不停歇地在網際網路各個節點爬行,在爬行過程中儘可能快的發現和抓取網頁。
2、索引器。
它的主要功能是理解搜索器所採集的網頁信息,並從中抽取索引項。
3、檢索器。
其功能是快速查找文檔,進行文檔與查詢的相關度評價,對要輸出的結果進行排序。
4、用戶介面。
它為用戶提供可視化的查詢輸入和結果輸出的界面。
搜索引擎中各關鍵功能模塊功能簡介如下:
(1)爬蟲:從網際網路爬取原始網頁數據,存儲於文檔知識庫伺服器。
(2)文檔知識庫伺服器:存儲原始網頁數據,通常是分散式Key-Value資料庫,能根據URL/UID快速獲取網頁內容。
(3)索引:讀取原始網頁數據,解析網頁,抽取有效欄位,生成索引數據。索引數據的生成方式通常是增量的,分塊/分片的,並會進行索引合併、優化和刪除。生成的索引數據通常包括:字典數據、倒排表、正排表、文檔屬性等。生成的索引存儲於索引伺服器。
(4)索引伺服器:存儲索引數據,主要是倒排表,通常是分塊、分片存儲,並支持增量更新和刪除。數據內容量非常大時,還根據類別、主題、時間、網頁質量劃分數據分區和分佈,更好地服務在線查詢。
(5)檢索:讀取倒排表索引,響應前端查詢請求,返回相關文檔列表數據。
(6)排序:對檢索器返回的文檔列表進行排序,基於文檔和查詢的相關性、文檔的鏈接權重等屬性。
(7)鏈接分析:收集各網頁的鏈接數據和錨文本(Anchor Text),以此計算各網頁鏈接評分,最終會作為網頁屬性參與返回結果排序。
(8)網頁去重:提取各網頁的相關特徵屬性,計算相似網頁組,提供離線索引和在線查詢的去重服務。
(9)網頁反垃圾:收集各網頁和網站歷史信息,提取垃圾網頁特徵,從而對在線索引中的網頁進行判定,去除垃圾網頁。
(10)查詢分析:分析用戶查詢,生成結構化查詢請求,指派到相應的類別、主題數據伺服器進行查詢。
(11)頁面描述/摘要:為檢索和排序完成的網頁列表提供相應的描述和摘要。
(12)前端:接受用戶請求,分發至相應伺服器,返回查詢結果。
搜索引擎工作流程主要有數據採集、數據預處理、數據處理、結果展示等階段。在各工作階段分別使用了網路爬蟲、中文分詞、大數據處理、數據挖掘等技術。
網路爬蟲也被稱為蜘蛛或者網路機器人,它是搜索引擎抓取系統的重要組成部分。網路爬蟲根據相應的規則,以某些站點作為起始站點通過各頁面上的超鏈接遍歷整個網際網路,利用URL弓I用根據廣度優先遍歷策略從一個html文檔爬行到另一個html文檔來抓取信息。
中文分詞是中文搜索引擎中一個相當關鍵的技術,在創建索引之前需要將中文內容合理的進行分詞。中文分詞是文本挖掘的基礎,對於輸入的一段中文,成功的進行中文分詞,可以達到電腦自動識別語句含義的效果。
大數據處理技術是通過運用大數據處理計算框架,對數據進行分散式計算。由於網際網路數據量相當龐大,需要利用大數據處理技術來提高數據處理的效率。在搜索引擎中,大數據處理技術主要用來執行對網頁重要度進行打分等數據計算。
數據挖掘就是從海量的數據中採用自動或半自動的建模演演算法,尋找隱藏在數據中的信息,是從資料庫中發現知識的過程。數據挖掘一般和計算機科學相關,並通過機器學習、模式識別、統計學等方法來實現知識挖掘。在搜索引擎中主要是進行文本挖掘,搜索文本信息需要理解人類的自然語言,文本挖掘指從大量文本數據中抽取隱含的、未知的、可能有用的信息。
網頁時效性:網際網路上的用戶眾多,數據信息來源極廣,網際網路上的網頁是呈實時動態變化的,網頁的更新、刪除等變動極為頻繁,有時候會出現新更新的網頁在爬蟲程序還來不及抓取的時候卻已經被刪除的情況,這將大大影響搜索結果的準確性。
大數據存儲問題:爬蟲抓取的數據在經過預處理后數據量依然相當龐大,這給大數據存儲技術帶來相當大的挑戰。當前大部分搜索引擎都是利用結構化的資料庫來存儲數據,結構化的資料庫存儲的數據具有高共享、低冗餘等特點,然而由於結構化的資料庫難以併發查詢所以存在查詢效率受限的問題。
檢索結果可靠性:目前由於數據挖掘技術以及計算機硬體的限制使得數據處理準確度未能達到理想程度,而且由於一些個人或公司利用搜索引擎現有的漏洞通過作弊手段來干擾檢索結果導致檢索結果的可靠性可能會有損失。
1、社會化搜索
社交網路平台和應用佔據了網際網路的主流,社交網路平台強調用戶之間的聯繫和交互,這對傳統的搜索技術提出了新的挑戰。
傳統搜索技術強調搜索結果和用戶需求的相關性,社會化搜索除了相關性外,還額外增加了一個維度,即搜索結果的可信賴性。對某個搜索結果,傳統的結果可能成千上萬,但如果處於用戶社交網路內其他用戶發布的信息、點評或驗證過的信息則更容易信賴,這是與用戶的心裡密切相關的。社會化搜索為用戶提供更準確、更值得信任的搜索結果。
2、實時搜索
對搜索引擎的實時性要求日益增高,這也是搜索引擎未來的一個發展方向。
實時搜索最突出的特點是時效性強,越來越多的突發事件首次發布在微博上,實時搜索核心強調的就是“快”,用戶發布的信息第一時間能被搜索引擎搜索到。不過在國內,實時搜索由於各方面的原因無法普及使用,比如Google的實時搜索是被重置的,百度也沒有明顯的實時搜索入口。
3、移動搜索
隨著智能手機的快速發展,基於手機的移動設備搜索日益流行,但移動設備有很大的局限性,比如屏幕太小,可顯示的區域不多,計算資源能力有限,打開網頁速度很慢,手機輸入繁瑣等問題都需要解決。
目前,隨著智能手機的快速普及,移動搜索一定會更加快速的發展,所以移動搜索的市場佔有率會逐步上升,而對於沒有移動版的網站來說,百度也提供了“百度移動開放平台”來彌補這個缺失。
4、個性化搜索
個性化搜索主要面臨兩個問題:如何建立用戶的個人興趣模型?在搜索引擎里如何使用這種個人興趣模型?
個性化搜索的核心是根據用戶的網路行為,建立一套準確的個人興趣模型。而建立這樣一套模型,就要全民收集與用戶相關的信息,包括用戶搜索歷史、點擊記錄、瀏覽過的網頁、用戶E-mail信息、收藏夾信息、用戶發布過的信息、博客、微博等內容。比較常見的是從這些信息中提取出關鍵詞及其權重。為不同用戶提供個性化的搜索結果,是搜索引擎總的發展趨勢,但現有技術有很多問題,比如個人隱私的泄露,而且用戶的興趣會不斷變化,太依賴歷史信息,可能無法反映用戶的興趣變化。
5、地理位置感知搜索
目前,很多手機已經有GPS的應用了,這是基於地理位置感知的搜索,而且可以通過陀螺儀等設備感知用戶的朝向,基於這種信息,可以為用戶提供準確的地理位置服務以及相關搜索服務。目前,此類應用已經大行其道,比如手機地圖APP。
6、跨語言搜索
如何將中文的用戶查詢翻譯為英文查詢,目前主流的方法有3種:機器翻譯、雙語詞典查詢和雙語語料挖掘。對於一個全球性的搜索引擎來說,具備跨語言搜索功能是必然的發展趨勢,而其基本的技術路線一般會採用查詢翻譯加上網頁的機器翻譯這兩種技術手段。
7、多媒體搜索
目前,搜索引擎的查詢還是基於文字的,即使是圖片和視頻搜索也是基於文本方式。那麼未來的多媒體搜索技術則會彌補查詢這一缺失。多媒體形式除了文字,主要包括圖片、音頻、視頻。多媒體搜索比純文本搜索要複雜許多,一般多媒體搜索包含4個主要步驟:多媒體特徵提取、多媒體數據流分割、多媒體數據分類和多媒體數據搜索引擎。
8、情境搜索
情境搜索是融合了多項技術的產品,上面介紹的社會化搜索、個性化搜索、地點感知搜索等都是支持情境搜索的,目前Google在大力提倡這一概念。所謂情境搜索,就是能夠感知人與人所處的環境,針對“此時此地此人”來建立模型,試圖理解用戶查詢的目的,根本目標還是要理解人的信息需求。比如某個用戶在蘋果專賣店附近發出“蘋果”這個搜索請求,基於地點感知及用戶的個性化模型,搜索引擎就有可能認為這個查詢是針對蘋果公司的產品,而非對水果的需求。