国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

李水蓮

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

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

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

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

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

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

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

一、搜索引擎的結(jié)構(gòu)

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

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

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

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

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

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

二、搜索引擎總體設(shè)計

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

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

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

1、整體結(jié)構(gòu)與模塊關(guān)系

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

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

2、三大功能模塊

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

圖1 搜索引擎的流程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4、 配置文件的配置

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

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

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

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

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

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

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

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

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

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

結(jié)論

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

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

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

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

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

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

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

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

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

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

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

猜你喜歡
分詞搜索引擎蜘蛛
結(jié)巴分詞在詞云中的應(yīng)用
智富時代(2019年6期)2019-07-24 10:33:16
小蜘蛛凍僵了,它在哪兒呢?
蜘蛛
值得重視的分詞的特殊用法
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
大蜘蛛
基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
廣告主與搜索引擎的雙向博弈分析
高考分詞作狀語考點歸納與疑難解析
論英語不定式和-ing分詞的語義傳承
手游| 平泉县| 苍山县| 佛山市| 阿鲁科尔沁旗| 聂荣县| 乌拉特后旗| 威海市| 大田县| 溧水县| 马公市| 炎陵县| 长海县| 惠东县| 盈江县| 察雅县| 城市| 江安县| 浪卡子县| 襄汾县| 闵行区| 麻城市| 延津县| 青川县| 河源市| 化州市| 苏尼特右旗| 高平市| 玛曲县| 文昌市| 乐安县| 迁西县| 江门市| 丰宁| 苍溪县| 滨海县| 灵山县| 西安市| 和政县| 彭州市| 田林县|