• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      搜索引擎的研究與實現(xiàn)

      2015-12-23 00:54:42李水蓮
      關鍵詞:分詞搜索引擎蜘蛛

      李水蓮

      (連云港財經(jīng)高等職業(yè)技術學校,江蘇 連云港222003)

      信息時代的爆炸帶來的是海量數(shù)據(jù)的發(fā)展,而搜索引擎帶來了大浪淘沙的功能。 網(wǎng)民們通過搜索引擎都能夠找到自己所需要的網(wǎng)頁,并且通過搜索引擎還能快速找到幫助自己發(fā)展的位置。 而搜索引擎的發(fā)展從第一代簡單的搜索,到當前復雜的數(shù)據(jù)挖掘,這其中的過程如下:

      第一代引擎出現(xiàn)在1994 年。此代的搜索引起內容簡單、搜索的范圍不廣,而且他們對于搜索到的資訊和時間要求都不很嚴格,導致了在搜索過程中,人們經(jīng)常需要花費大量的耐心來進行檢索,一般檢索的時間要等到10 秒或者更長。這一代的搜索使用的技術是在線搜索和IR 搜索技術。 根據(jù)數(shù)據(jù)統(tǒng)計,在當時在網(wǎng)絡爬蟲的數(shù)據(jù)大約每天1500 次查詢左右。

      第二代搜索是建立在第一代搜索的基礎之上的。 由于第一代搜索的速度非常緩慢,第二代搜索在采用新技術——分布式響應方案的基礎上,提升了相應規(guī)模和相應速度,通過建立起一個大型、分布式的索引數(shù)據(jù)庫,每天直接對應各種用戶的需求, 并能夠快速的進行反饋。這種索引快速,導致了用戶數(shù)量的不斷增加和擴展。

      第三代搜索是在獲取用戶數(shù)據(jù)上的。 通過搜索引擎充分理解用戶的需求,分析用戶對當前數(shù)據(jù)的安排和內容,并直接響應出用戶檢索的內容,減少用戶的查詢時間和響應時間。 這種檢索方式,需要充分利用用戶與檢索內容的交互,進行數(shù)據(jù)挖掘和數(shù)據(jù)分析,方能實現(xiàn)。

      我們當前正處于第二代和第三代搜索之間, 在減少響應速度和響應時間之間,著名的搜索公司Google 和國內的百度有著自己的發(fā)展方向。

      在因特網(wǎng)領域,搜索引擎技術得到了廣泛使用,然而他在國內外的含義卻有所不同。 在美國搜索引擎通常指的是基于因特網(wǎng)的搜索引擎, 他們通過網(wǎng)絡機器人程序收集上千萬到幾億個網(wǎng)頁, 并且每一個詞都被搜索引擎索引,也就是我們說的全文檢索。 在美國,他們通過網(wǎng)絡機器人程序收集上千萬到幾億個網(wǎng)頁, 并且每一個詞都被搜索引擎索引,也就是我們說的全文檢索。著名的因特網(wǎng)搜索引擎包括First Search、Google、HotBot 等。 在中國,搜索引擎通常指基于網(wǎng)站目錄的搜索服務或是特定網(wǎng)站的搜索服務,本人這里研究的是基于因特網(wǎng)的搜索技術。

      一、搜索引擎的結構

      本文基于瀏覽器/服務器(Browse/Server)結構,使用JSP 作為開發(fā)語言,J2EE 作為開發(fā)工具,MySQL 作為數(shù)據(jù)庫,并在Tomcat5.0 上進行發(fā)布。 由于JAVA 語言具有可移植、安全性、解釋執(zhí)行、高性能、動態(tài)性,以及稍做修改后就具有跨平臺性的優(yōu)點, 使得本系統(tǒng)操作方便、快捷。

      1、網(wǎng)絡蜘蛛概念

      網(wǎng)絡蜘蛛即Web Spider , 是一個很生動的名字。 假如我們把互聯(lián)網(wǎng)比喻成一個蜘蛛網(wǎng), 那么Spider 就是在蜘蛛網(wǎng)上爬來爬去的蜘蛛。 通過網(wǎng)頁的鏈接地址, 網(wǎng)絡蜘蛛從網(wǎng)站某一個頁面( 通常是首頁) 開始, 通過讀取網(wǎng)頁的內容, 找到其他網(wǎng)頁的鏈接地址, 然后再通過這些鏈接地址繼續(xù)讀取下一個網(wǎng)頁。 這樣一直循環(huán)下去, 直到把這一網(wǎng)站所有的網(wǎng)頁都抓取完為止。 如果把整個互聯(lián)網(wǎng)當成一個整體網(wǎng)站, 那么網(wǎng)絡蜘蛛就是通過上述原理抓取Interner 網(wǎng)上的所有網(wǎng)頁。 對于搜索引擎來說, 要抓取互聯(lián)網(wǎng)上所有的網(wǎng)頁幾乎是不可能的, 從目前公布的數(shù)據(jù)來看, 容量最大的搜索引擎也不過是抓取了整個網(wǎng)頁數(shù)量的百分之四十左右。 這其中的原因一方面是抓取技術的瓶頸, 無法遍歷所有的網(wǎng)頁, 有許多網(wǎng)頁無法從其它網(wǎng)頁的鏈接中找到; 另一方面是存儲技術和處理技術的問題,如果按照每個頁面的平均大小為20K 計算(包含圖片) , 100 億網(wǎng)頁的容量是100 ×2000G 字節(jié), 即使能夠存儲, 下載也存在問題( 按照一臺機器每秒下載20K 計算, 需要340 臺機器不停的下載一年時間, 才能把所有網(wǎng)頁下載完畢) 。

      2、網(wǎng)絡蜘蛛的主要技術

      在抓取網(wǎng)頁時, 網(wǎng)絡蜘蛛一般有廣度優(yōu)先和深度優(yōu)先兩種策略。 廣度優(yōu)先其實就是一種并行處理, 網(wǎng)絡蜘蛛通過起始網(wǎng)頁中鏈接的所有網(wǎng)頁, 選擇其中的一個鏈接網(wǎng)頁, 抓取在此網(wǎng)頁中鏈接的所有網(wǎng)頁,依次擴展,從而提高其抓取速度。 深度優(yōu)先是指網(wǎng)絡蜘蛛會從起始頁開始, 一個鏈接一個鏈接地跟蹤下去, 處理完這條線路之后再轉入下一起始頁, 繼續(xù)跟蹤鏈接。 這一方法的優(yōu)點是網(wǎng)絡蜘蛛在設計時比較容易。 相對于深度優(yōu)先來說,廣度優(yōu)先要常用的多。

      目前一般的網(wǎng)站都希望有更多的訪問者訪問, 也就是需要有更多的搜索引擎找到訪問的網(wǎng)頁,也即是全面地抓取自己網(wǎng)站的網(wǎng)頁。 為了讓本網(wǎng)站的網(wǎng)頁更全面地被抓取到, 網(wǎng)站管理員可以建立一個網(wǎng)站地圖, 即Site Map。 網(wǎng)絡蜘蛛通過sitemap.htm 這個入口爬取這個網(wǎng)站的網(wǎng)頁,抓取這些文件后,通過讀取其中的文本信息,提取對搜索引擎的搜索準確性有重要幫助的文檔信息, 同時, 這些信息也利用網(wǎng)絡蜘蛛正確跟蹤其它鏈接。 在搜索引擎中網(wǎng)絡蜘蛛占有重要位置, 對搜索引擎的查全、查準都有影響, 決定了搜索引擎數(shù)據(jù)容量的大小。 同時,它的好壞還直接影響到搜索結果頁中的死鏈接( 即鏈接所指向的網(wǎng)頁已經(jīng)不存在) 個數(shù)。

      二、搜索引擎總體設計

      現(xiàn)實環(huán)境中,有許多用戶都有搜索服務的需求,例如很多網(wǎng)站都渴望有自己的站內搜索,這當然可以通過數(shù)據(jù)庫來簡單實現(xiàn),但是在搜索服務器的負載量很大的情況下,數(shù)據(jù)庫是無力應付的,而且數(shù)據(jù)庫簡單的基于字符串匹配的方式也顯得過于呆板, 不能提供更多的高級搜索功能。 有的用戶可能會選擇自己組建開發(fā)團隊來開發(fā)搜索引擎, 也可能會購買商用的搜索服務器軟硬件來搭建搜索平臺。 不過, 筆者認為普通用戶也可以選擇簡單地購買搜索服務,不需要自己的開發(fā)團隊,也不需要自己購買搜索服務軟硬件。 也就是說, 用戶只簡單地提出搜索服務要求,其它一切都交給搜索服務提供商,軟硬件和數(shù)據(jù)維護與更新都交給服務提供商。

      在上述情況下, 一個搜索引擎服務器提供商可以為若干個客戶提供搜索,他們需要根據(jù)不同用戶的需求去設計數(shù)據(jù)的索引策略和搜索策略,同時需要在自己的服務器主機上保存和維護不同用戶的數(shù)據(jù)。 Solr1.3 優(yōu)秀的多核心性能正好能滿足這樣的需求, 一方面多核心可以實現(xiàn)多庫, 也就可以實現(xiàn)多個服務并行提供; 另一方面Solr1.3 的各個核心之間的獨立性和可配置性,又使得搜索服務提供商可以根據(jù)不同用戶的需求來進行個性化的配置。

      這一章將基于Solr1.3 來設計一個在同一個服務器對兩個大學(北京大學、中山大學)網(wǎng)站進行搜索的合成搜索引擎。主要目的是要利用Solr1.3 的多核心特性來設計一個多索引庫的應用場景。 本設計無意追求真實場景中的搜索性能,只是提供一種基于Solr1.3 開發(fā)多應用搜索引擎的思路。 設計注重管理與普通使用的分離, 將所有管理操作都納入同一個Web 頁面下以提供管理的方便性,同時盡量考慮將來的擴展需求。

      1、整體結構與模塊關系

      基于Solr1.3 的搜索引擎實現(xiàn)的結構,是常用的一種結構,該結構具有索引更新、索引刪除、查詢、分詞、網(wǎng)絡蜘蛛、索引庫、New API、Solr Core API 八大模塊(由于管理員頁面與普通用戶查詢頁面只是簡單的HTTP 接口調用,所以不將他們算作單獨模塊)。 這八大模塊中除Solr Core API 模塊外,其他模塊都是我們需要實現(xiàn)或配置的。圖中的箭頭表示模塊間的調用關系, 虛箭頭處意在說明這里的調用是通過修改配置文件由Solr1.3 內部實現(xiàn)的,至于其如何去調用,我們不必去理會。

      該結構中索引更新、 索引刪除和查詢模塊主要使用Servlet 技術實現(xiàn),Servlet 一方面通過Java 代碼調用New API 模塊和網(wǎng)絡蜘蛛模塊, 另一方面對外提供HTTP 調用接口。 New API 層存在的原因是:Solr Core API 接口提供高內聚、低耦合的特性的同時,接口的參數(shù)類型過于復雜且參數(shù)類型不宜普通開發(fā)者理解,New API 層對Solr Core API 進行重新包裝使得參數(shù)更容易理解, 同時它實現(xiàn)的功能是Solr Core API 的子集也使得接口更加簡化。

      2、三大功能模塊

      搜索引擎從總體而言, 主要可以分為3 大主要功能模塊:網(wǎng)頁抓取模塊(Web Spider)、信息抽取和索引模塊、查詢頁面和查詢的算法。 這3 大模塊代表著搜索是否能夠快速的滿足用戶的需求,也代表著整個搜索引擎品質。如圖1。

      圖1 搜索引擎的流程

      (1)網(wǎng)頁抓取模塊(Web Spider)

      該模塊是從互聯(lián)網(wǎng)的海量信息當中, 找到與搜索主題相關的網(wǎng)頁。 建立起相應的索引, 以便提供給用戶查詢。 此過程中需要進行強大網(wǎng)頁抽取功能。 這需要抓取模塊——網(wǎng)絡蜘蛛、網(wǎng)絡爬蟲具有強大的網(wǎng)頁分析和檢索功能。 通過凈化和抽取, 將符合標準規(guī)范的網(wǎng)頁存儲入數(shù)據(jù)庫當中。

      (2)信息抽取和索引模塊。

      該模塊是利用已經(jīng)生成的數(shù)據(jù)庫進行索引, 以便提升查詢的效率和減少查詢的時間。 本模塊屬于承前啟后的作用,是搜索引擎當中最為重要的模塊,前一步的要求的是對網(wǎng)頁進行數(shù)據(jù)抽取,后一步的是對已經(jīng)抽取的數(shù)據(jù)進行大規(guī)模的數(shù)據(jù)索引。 通過建立起大規(guī)模的結構化和非結構化的數(shù)據(jù)提取相應的數(shù)據(jù)信息。 并對檢索要求的數(shù)據(jù)進行分詞、排序等大規(guī)模的數(shù)據(jù)整理工作。

      (3)查詢頁面和查詢的算法。

      用戶通過第二步的索引建立, 已經(jīng)建立出一個具有較快速的查詢方案,本步驟的主要要求是如何使用已經(jīng)建立起的索引模塊,因此提升查詢速度和查詢效率是本步驟中最為關注的重點。 當然, 與用戶之間的界面交互也是查詢頁面的設計內容之一。

      三、搜索引擎詳細設計與實現(xiàn)

      1、網(wǎng)絡蜘蛛模塊的設計與實現(xiàn)

      目前, 互聯(lián)網(wǎng)上有許多開源的網(wǎng)絡蜘蛛, 例如Heritrix。 雖然它們功能很強大,但是使用與改造都十分復雜,索引本文不使用這些復雜的網(wǎng)絡蜘蛛工具來實現(xiàn)而選擇自己編寫簡單可用的網(wǎng)絡蜘蛛。 網(wǎng)絡蜘蛛模塊采用廣度優(yōu)先法實現(xiàn)。實現(xiàn)該爬蟲的類為Spider,對外提供nextPage()方法返回一個獲取的網(wǎng)頁。 底層網(wǎng)頁解析部分功能使用了開源的工具包htmlparser。

      爬蟲以網(wǎng)站首頁URL 為構造函數(shù)的參數(shù),這決定了爬蟲將以此URL 作為爬行的起始點。 爬蟲的nextPage()方法返回一個Page 對象,它代表一個滿足條件的可以被索引的網(wǎng)頁。 爬蟲nextPage() 方法的工作流程為:從未處理URL 隊列中提取出一個URL –>分析該URL 以提取出新的URL,如果新的URL 未在已處理URL 隊列出現(xiàn),將新的URL 交給過濾器, 將過濾后的URL 添加到未處理URL 隊列–>將當前處理的URL 添加到已處理URL隊列–>提取出文字與標題, 構造Page 對象并返回該對象。

      2、New API 模塊的設計與實現(xiàn)

      New API 模塊主要是簡化原有調用結構, 使得參數(shù)更加貼近實際需求。 也就是說我們的傳入?yún)?shù)是我們熟悉的(如標題,內容,關鍵字),查詢返回結果也是我們熟悉的類型。 New API 模塊的實現(xiàn)過程中一個重要的部分就是參數(shù)類型的轉化, 以使得外層參數(shù)與內層參數(shù)銜接起來。

      New API 通過類DirectAPI 來實現(xiàn)。

      MyQueryResult 類型是自定義的返回結果類型,我們通過對XML 結果的解析, 提取出所需信息包裝成MyQueryResult 對象,在生成用戶友好的頁面響應結果的時候,可以方面地通過該對象獲得所需數(shù)據(jù)。

      3、管理模塊的設計與實現(xiàn)

      管理模塊是給管理員和開發(fā)者使用的, 管理利用該模塊來添加、更新、刪除索引和進行查詢操作。 為提高管理的方便性, 管理模塊提供Web 界面,Web 頁面通過調用Servlet 來達到操作效果。

      4、 配置文件的配置

      配置文件包括schema.xml、solrcofig.xml、solr.xml。 在本應用中,由于有兩個庫(sysu 和pku),所以需要在solr.xml 中配置兩個庫。 搜索器和索引器相關參數(shù)使用默認設置,所以不需要對solrconfig.xml 進行特別設置。

      schema.xml 文件需要兩個fieldtype:string 和text。 其中text 指明該類型使用中文分詞類進行分詞;field 有四個:id、url、text、title;類型分別為string、string、text、text。 id字段表示文檔序號,url 表示網(wǎng)頁的連接地址,title 和text為網(wǎng)頁的標題和內容,后兩者是需要分詞和建立索引的。默認的搜索字段為text, 這樣我們就可以搜索某個網(wǎng)頁的文字信息了。

      5、分詞模塊的設計與實現(xiàn)

      分詞模塊是中文搜索引擎中極其重要的模塊, 搜索的效果很大程度上決定與分詞的效果,但是自主研發(fā)中文分詞需要非常雄厚的技術實力,一般開發(fā)者是無法自主研發(fā)的。 這里我們選擇使用開源的中文庖丁解牛工具包來實現(xiàn)。

      分詞模塊實現(xiàn)步驟如下:

      1. 下載“庖丁解?!狈衷~包,按照配置教程設置好環(huán)境變量和用戶詞典。

      2. 然后將分詞包添加到工程, 修改中文分詞類org.apache.solr.analysis. ChineseTokenizerFactory,使用用中文庖丁解牛工具包來實現(xiàn)。

      3. 最后配置schema.xml 中需要分詞的域類型使用該分詞類即可。

      6、 查詢模塊的設計與實現(xiàn)

      用戶通過查詢頁面 (search.jsp) 的表單向服務器SearchServlet 發(fā)送查詢請求。 服務器收到請求后,獲得查詢的參數(shù), 調用DirectAPI.queryAndReturnMyQueryResult獲得查詢結果MyQueryResult 對象, 然后從該對象獲得結果信息,并重設request 使它包含結果信息。 最后將請求轉向結果顯示頁面(ResultShow.jsp)。

      結論

      搜索是互聯(lián)網(wǎng)發(fā)展時代的主題, 也是當前大數(shù)據(jù)挖掘時代的主要支持對象。 隨著因特網(wǎng)的技術不斷發(fā)展和更新,利用網(wǎng)絡來獲取各種資源的信息已經(jīng)成為了人們生活、 工作中最為常見的活動。 人們利用各種檢索來的信息,分析信息和發(fā)展信息,最終達到合理利用資源的手段和方法。 我們可以預計, 在未來人們對于搜索網(wǎng)絡信息的搜索引擎要求越來越高,搜索的內容也越來越復雜,搜索引擎的發(fā)展也一定會隨著時代的發(fā)展,以用戶為核心的計算不斷延伸和發(fā)展。

      [1]汪曉平,鐘軍.JSP 網(wǎng)絡開發(fā)技術.人民郵電出版社,2003:103-178

      [2] 周曉敏.DreamWeaver?MX 應用培訓教程. 電子工業(yè)版,2002:55-71

      [3]黃日昆.網(wǎng)絡引文搜索引擎CiteSeer 評析.情報雜志.南寧,2004:1-4

      [4](美)亨特,(美)羅夫特斯.精通J2EE.清華大學出版社,2004:256-299

      [5](美)馬丁.Servlet 與JSP 核心技術.人民郵電出版社,2001:66-89

      [6]資訊教育小組.JSP 與SQL 網(wǎng)站數(shù)據(jù)庫程序設計.科學出版社,2002: 202-297

      [7]飛思科技.JSP 應用開發(fā)詳解.電子工業(yè)出版社,2005:345-358

      [8]李博.JSP 應用開發(fā)指南.科學出版社,2003:45-123

      [9]鄧子云,張賜.JSP 網(wǎng)絡編程從基礎到實踐.電子工業(yè)出版社,2006:56-280

      [10]宋杰,王大玲,鮑玉斌,申德榮.基于頁面Block 的Web 檔案采集和存儲.電子工業(yè)出版社,2008:275-290

      猜你喜歡
      分詞搜索引擎蜘蛛
      結巴分詞在詞云中的應用
      智富時代(2019年6期)2019-07-24 10:33:16
      小蜘蛛凍僵了,它在哪兒呢?
      蜘蛛
      值得重視的分詞的特殊用法
      網(wǎng)絡搜索引擎亟待規(guī)范
      大蜘蛛
      基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
      廣告主與搜索引擎的雙向博弈分析
      高考分詞作狀語考點歸納與疑難解析
      論英語不定式和-ing分詞的語義傳承
      外語學刊(2011年3期)2011-01-22 03:42:20
      宿迁市| 扎囊县| 东乌珠穆沁旗| 大足县| 禹州市| 苏州市| 江山市| 天津市| 韩城市| 博罗县| 曲沃县| 乃东县| 响水县| 科技| 全州县| 枣强县| 尉犁县| 金门县| 景东| 济南市| 沙湾县| 玉环县| 阿坝县| 河津市| 闽清县| 湘阴县| 临夏市| 乌拉特中旗| 绿春县| 怀柔区| 锡林郭勒盟| 祁阳县| 黔西县| 黄龙县| 叶城县| 南投县| 图木舒克市| 淮南市| 偃师市| 濮阳市| 南平市|