劉智勇
摘要:隨著科技的進步與發展,互聯網成為21世紀的寵兒,網絡信息也復雜多樣。這些繁雜的網絡信息在給我們帶來便利的同時也產生了極大的問題,比如如何在這海量的信息里面找到自己所需要的內容,成為當前互聯網技術的熱門領域。互聯網信息復雜多樣,因此想要迅速、快捷的找到所需要的信息內容,就需要搜索引擎來幫忙實現。本文就對搜索引擎的工作原理,組成和數據結構等方面進行分析,對搜索引擎未來的發展方向進行探索。眾所周知,智能化是未來的一個大的趨勢,想要實現搜索引擎的智能化,就需要使搜索引擎具備自我學習的能力,適應用戶的查詢需求。
關鍵詞:搜索引擎;智能化;信息檢索
中圖分類號:TP391.3 文獻標識碼:A 文章編號:1007-9416(2017)05-0205-01
1 搜索引擎概述
隨著信息時代的來臨,互聯網的迅速普及應用,已經成為我們正常生活中不可或缺的一部分。因為互聯網信息具備共享等多種特性,使得網絡信息成倍的增加。谷歌公司所收錄的網頁信息都已經過億,而且每天還在不斷的攀升,想要在這么多數據里面,選取對自己有用的信息,就需要借助搜索引擎來進行實現。
搜索引擎是從1994年誕生,隨著互聯網的信息日益增多,搜索引擎也在不斷的發展,從1994年到現在歷經三個階段。搜索引擎的第一個階段就是1994年到1996年,這個階段的搜索引擎以集中式檢索為主。當時網絡信息并沒有很多,一般都是少于百萬的網頁,也沒有索引,檢索速度也非常慢。也是采用網絡、數據庫等關鍵技術來實現。第二個階段是1996年到1998年,這個期間,搜索引擎采用分布式檢索方案,使用多個微型計算機來協同工作,其目的是為了提高數據規模和響應速度。一般可以響應千萬次的用戶檢索請求。第三代搜索引擎,就當前所使用的搜索引擎,也是搜索引擎極為繁榮的時期。它擁有完整的索引數據庫,除了一般的搜索,還有主題搜索和地域搜索。但是這些搜索結果反饋給用戶的數據量較大,檢索結果的相關度又成為研究的核心。
我們通常所用的搜索引擎也分為多種,按照信息的搜集方法和服務提供方式的不同進行區分,常用的有三類,第一,目錄式搜索引擎。它是以人工方式進行信息的搜集,由編輯員進行審查并制作成信息摘要,將其進行分類置入架構中去。這類搜索方式的搜索結果準確,信息質量高,但是需要大量的人工成本,信息更新不及時,維護量大。第二,機器人搜索引擎。就是我們常說的網絡爬蟲,是由一個網絡蜘蛛的機器人程序以某種策略自動地在互聯網中搜集和發現信息,這種信息查詢方式是由索引器完成的。索引器為搜集到的信息建立一個完整的索引,根據用戶所輸入的關鍵詞,對索引庫進行檢索,從而查詢到信息并將信息反饋給用戶。這種檢索方式,可以保證數據的及時更新,減少人工成本,但是返回的信息很多,相關度不高。第三,元搜索引擎。這類搜索引擎比較奇怪,沒有自己的數據信息,而是根據用戶輸入的查詢關鍵字向其他搜索引擎發出請求,由其他搜索引擎來完成,并且將返回的結果進行篩選,排序處理,然后將這些信息作為自己的結果反饋給用戶。
2 搜索引擎的系統架構
一般來說,搜索引擎的工作流程分為四步,從網上抓取網頁,建立索引數據庫,根據用戶的關鍵詞在索引數據庫中進行搜索,對搜索結果進行相關度排序處理。它主要由網絡蜘蛛、索引器和檢索器三部分組成。網絡蜘蛛,英文名稱Web Spider,它的主要功能是從指定的IP出發,便利整個互聯網中所存在的網頁,它可以借助網頁中的URL爬到其他網頁中去,不停的對這個過程進行重復,將爬過的網頁搜集起來并存儲到頁面存儲庫中去。Indexer,索引器,它的主要功能是將Web Spider收集回來的網頁進行分析,提取網頁中所含的信息,并按照相關度進行計算,將這些相關信息建立完整的網頁索引數據庫。Searcher,檢索器,用戶輸入關鍵詞進行搜索,它負責對關鍵詞進行分解,根據搜索器從網頁索引數據庫中查詢到相關度較高的網頁,對其進行排序處理,然后交給系統,系統會把結果進行組織處理,反饋給用戶。
搜索引擎對于文件的存儲要求較高,操作系統又有自身的缺陷,在大型文件的管理方面存在諸多局限,這就需要搜索引擎自行定義和管理大型文件系統。大型文件是一種跨多文件系統的虛擬文件,支持64位尋址方式,可自動處理多文件系統的分配和尋址。
3 搜索引擎的軟件實現
利用Java技術對搜索引擎的三個主要部件進行實現,能夠完成搜索引擎的基本功能。在進行軟件開發前期,要進行Java開發環境的搭建,需要Java程序開發包,Java 2Platform Standard Edition5.0,實現索引和搜索的Java類庫,Lucene1.4.3,還有Servlet/JSP容器,Tomcat 5.5。下面對搜索引擎所用到的Java相關技術進行介紹。
3.1 Java的Internet鏈接技術
Web Spider為了抓取網頁,其主要原因是它能夠與Web服務器通信,進行網頁的下載。Java提供諸多支持Internet鏈接的類庫,即套接字類和與URL地址一起工作的URL類庫。套接字就是我們常說的端口,它們都有自己的端口號,端口號與鏈接相互通信,客戶端程序制定端口號發送鏈接請求。而Java中定義Socket和ServerSocket兩個類,在套接字程序設計中較為常用。Socket類可以聲明客戶端套接字,ServerSocket聲明服務端套接字,建立點對點的鏈接。在建立之前,服務端在監聽,客戶端在請求,一旦鏈接建立完成,使用I/O流來進行二者之間的通信。而URl類允許解析URL,為它創建一個對象,將其解析為主機名和路徑,除此之外,URL類還具有打開地址鏈接的能力,從而實現URL的信息檢索能力。
3.2 Java中的中文處理和多線程機制
搜索引擎的工作流程就是網頁的抓取、索引、搜索結果輸出,當然在這些過程中都遇到了漢字亂碼的問題。目前Java很好的支持漢字,在中文處理方面也非常的優秀,前提條件是需要設置正確的編碼方式。而且在搜索引擎的工作過程中都是以多線程的機制運行,可以提高工作效率。Java中提供兩種辦法來進行多線程的操作。第一種方法就是繼承Thread對象,封裝線程,在用run方法來為特定的線程提供代碼。但是Java不支持多繼承,當它需要繼承其他類時,這個方法就行不通。那么可以試試第二種辦法,就是執行Runnable接口,在類里面建立Run方法,這樣就可以解決第一種方法的限制。
3.3 Lucene實現索引和搜索
Lucene是一種高性能的Java庫,而且易于擴展,可以利用其中的Java類在程序中增加索引和搜索功能。Lucene可以添加索引和搜索功能到應有程序中,并且通用性好,支持多種文本格式數據,因為它不關心數據的來源、格式和語言,只要是能轉換成文本,都可以利用Lucene來進行索引和搜索。而且它還可以索引存儲在數據庫中的數據,實現全文檢索。提供核心類,可以在應用程序中很是方便的加入索引和搜索功能。
4 結語
搜索引擎的基本功能都可以利用Java進行實現,而且極為方便。本文構建的Web Spider利用隊列和多線程機制,使得搜索引擎具備較高的搜索效率,較好的支持中文。通過這次設計與實現,對搜索引擎的工作原理和整體架構有了一個較為全面的認識。
參考文獻
[1]唐陪和,楊新論,劉浩.Google搜索引擎剖析[J].情報檢索,2004,(8):88-90.
[2]印鑒,陳憶群,張鋼.搜索引擎技術研究與發展[J].計算機工程,2005,(14).
[3]孫西全,馬瑞芳,李燕靈.基于Lucene的信息檢索的研究與應用[J].情報理論與實踐,2006,01.endprint