基于JAVA的搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)_第1頁
基于JAVA的搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)_第2頁
基于JAVA的搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)_第3頁
基于JAVA的搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)_第4頁
基于JAVA的搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

仰恩大學(xué)畢業(yè)設(shè)計(jì)(論文)仰恩大學(xué)畢業(yè)設(shè)計(jì)(論文)I基于JAVA的搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)摘要網(wǎng)絡(luò)中的資源非常豐富,但是如何有效的搜索信息卻是一件困難的事情。建立搜索引擎就是解決這個(gè)問題的最好方法。本文首先詳細(xì)介紹了基于英特網(wǎng)的搜索引擎的系統(tǒng)結(jié)構(gòu),然后從網(wǎng)絡(luò)機(jī)器人、索引引擎、Web服務(wù)器三個(gè)方面進(jìn)行詳細(xì)的說明。為了更加深刻的理解這種技術(shù),本人還親自實(shí)現(xiàn)了一個(gè)自己的搜索引擎——新聞搜索引擎。新聞搜索引擎是從指定的Web頁面中按照超連接進(jìn)行解析、搜索,并把搜索到的每條新聞進(jìn)行索引后加入數(shù)據(jù)庫。然后通過Web服務(wù)器接受客戶端請求后從索引數(shù)據(jù)庫中搜索出所匹配的新聞。本人在介紹搜索引擎的章節(jié)中除了詳細(xì)的闡述技術(shù)核心外還結(jié)合了新聞搜索引擎的實(shí)現(xiàn)代碼來說明,圖文并茂、易于理解。關(guān)鍵詞:搜索引擎;網(wǎng)絡(luò)蜘蛛;搜索策略

AbstractTheresourcesintheinternetareabundant,butitisadifficultjobtosearchusefulinformation.Soasearchengineisthebestmethodtosolvethisproblem.Tharticlefintroducesthesystems structureofsearchenginebasedontheinternetindetail,thengivesaminuteexplanationformSpidersearch,engineandwebserver.Iordertounderstandthetechnologymoredeeply,Ihaveprogrammedanewssearchenginebymyself.Thenewssearchengineisexplainedandsearchedaccordingtohyperlinkfromaappointedwebpage,thenindexeseverysearchedinformationandaddsittotheindexdatabase.Thenafterreceivingthecustomers'requestsfromthewebserver,itsoonsearchestherightnewsformtheindexengine,Inthechapterofintroducingsearchengine,itisnotonlyelaboratethecoretechnology,butalsocombinewiththemoderncode,picturesincluded,easytounderstand.KeyWords:Searchengine;Webspider;Searchstrategy目錄TOC\o"1-1"\h\z\u\h摘要 I\hAbstract III引言1搜索引擎的結(jié)構(gòu)21.1搜索引擎系統(tǒng)概述21.2搜索引擎的構(gòu)成21.2.1網(wǎng)絡(luò)蜘蛛21.2.2索引與搜索21.2.3Web服務(wù)器31.3搜索引擎的主要指標(biāo)及分析3網(wǎng)絡(luò)機(jī)器人42.1什么是網(wǎng)絡(luò)機(jī)器人42.2網(wǎng)絡(luò)機(jī)器人的結(jié)構(gòu)分析42.2.2Spider程序結(jié)構(gòu)42.2.3如何構(gòu)造Spider程序52.2.4如何提高程序性能72.2.5網(wǎng)絡(luò)機(jī)器人的代碼分析7基于lucene的索引與搜索、tomcat服務(wù)器103.1什么是LUCENE全文檢索10LUCENE的原理分析103.2.1客戶端設(shè)計(jì)103.2.2全文檢索的實(shí)現(xiàn)機(jī)制11Lucene的索引效率11中文切分詞機(jī)制133.2.5服務(wù)端設(shè)計(jì)14LUCENE與SPIDER的結(jié)合143.3.1如何解析HTML16基于TOMCAT的WEB服務(wù)器193.5在TOMCAT上部署項(xiàng)目19搜索引擎策略214.1簡介214.2面向主題的搜索策略214.2.1導(dǎo)向詞214.2.2網(wǎng)頁評級214.2.3權(quán)威網(wǎng)頁和中心網(wǎng)頁22結(jié)論23參考文獻(xiàn)24致謝25引言面對浩瀚的網(wǎng)絡(luò)資源,搜索引擎為所有網(wǎng)上沖浪的用戶提供了一個(gè)入口,毫不夸張的說,所有的用戶都可以從搜索出發(fā)到達(dá)自己想去的網(wǎng)上任何一個(gè)地方。因此它也成為除了電子郵件以外最多人使用的網(wǎng)上服務(wù)。搜索引擎技術(shù)伴隨著WWW的發(fā)展是引人注目的。搜索引擎大約經(jīng)歷了三代的更新發(fā)展:第一代搜索引擎出現(xiàn)于1994年前后。以Altavista,Yahoo和Infoseek為代表,注重反饋結(jié)果的數(shù)量,主要特征是“求全”。它主要依靠人工分揀的分類目錄搜索,通常由網(wǎng)頁制作人自行建立網(wǎng)站名稱、網(wǎng)站內(nèi)容的文字摘要,并將其加入到搜索引擎的資料庫中。搜索引擎根據(jù)用戶鍵入的信息,根據(jù)預(yù)先設(shè)定的規(guī)則進(jìn)行簡單的匹配、排序和顯示。這種方法只能進(jìn)行簡單的字符串匹配,無法進(jìn)行全文搜索。研究表明,搜索引擎性能并沒有想象中的那么優(yōu)秀,在全球11個(gè)主要的搜索引擎中,搜索引擎僅能搜索到國際互聯(lián)網(wǎng)上全部頁面的16%,甚至更低,造成這種情況的原因,主要是這些搜索引擎沒有及時(shí)更新資料。第二代搜索引擎,利用超鏈接分析為基礎(chǔ)的機(jī)器抓取技術(shù),由搜索引擎使用一個(gè)程序在網(wǎng)絡(luò)上擷取資料,并自動(dòng)將得到的結(jié)果存入索引庫中。搜索引擎根據(jù)用戶鍵入的信息進(jìn)行匹配、排序和顯示。這些引擎的主要特點(diǎn)是提高了查準(zhǔn)率,可以用“求精”來描述它的優(yōu)點(diǎn),即不需要網(wǎng)站制作人單獨(dú)鍵入供搜索的信息,并且從理論上講,可將任意網(wǎng)站的所有網(wǎng)頁加入到它的資料庫中。第二代搜索引擎的大多數(shù)查詢都會(huì)返回成千上萬條信息,查詢結(jié)果中無關(guān)信息太多,而且查詢結(jié)果顯示比較混亂,使用者仍然難以找到真正想要的資料。第三代搜索引擎是對第二代搜索引擎的改進(jìn),相對于前兩代,其更注重智能化和用戶使用的個(gè)性化,主要增加了互動(dòng)性和個(gè)性化等高級的技術(shù),采用了中文自動(dòng)分類、自動(dòng)聚類等人工智能技術(shù),而且使用了中文內(nèi)容分析技術(shù)以及區(qū)域智能識(shí)別技術(shù),增強(qiáng)了搜索引擎的查詢能力。同時(shí),搜索技術(shù)將更加智能化,可搜索資源將更加廣泛,搜索方式也將更加便捷有效,為用戶使用搜索引擎獲取信息獲得更好的體驗(yàn)。在美國搜索引擎通常指的是基于因特網(wǎng)的搜索引擎,他們通過網(wǎng)絡(luò)機(jī)器人程序收集上千萬到幾億個(gè)網(wǎng)頁,并且每一個(gè)詞都被搜索引擎索引,也就是我們說的全文檢索。著名的因特網(wǎng)搜索引擎包括FirstSearch、Google、HotBot等。本人這里研究的就是基于因特網(wǎng)的搜索技術(shù)。1搜索引擎的結(jié)構(gòu)1.1搜索引擎系統(tǒng)概述搜索引擎是根據(jù)用戶的查詢請求,按照一定算法從索引數(shù)據(jù)中查找信息返回給用戶。為了保證用戶查找信息的精度和新鮮度,搜索引擎需要建立并維護(hù)一個(gè)龐大的索引數(shù)據(jù)庫。一般的搜索引擎由網(wǎng)絡(luò)機(jī)器人程序、索引與搜索程序、索引數(shù)據(jù)庫等部分組成。WWWWWW文檔網(wǎng)絡(luò)機(jī)器人程序建立Lucene索引從數(shù)據(jù)庫中搜索信息Tomcat服務(wù)器Lucene索引數(shù)據(jù)庫WWW瀏覽器WWW瀏覽器JSP網(wǎng)絡(luò)機(jī)器人程序系統(tǒng)結(jié)構(gòu)圖1.2搜索引擎的構(gòu)成1.2.1網(wǎng)絡(luò)蜘蛛網(wǎng)絡(luò)蜘蛛也稱為“網(wǎng)絡(luò)機(jī)器人”(Spider),是一個(gè)功能很強(qiáng)的WEB掃描程序。它可以在掃描WEB頁面的同時(shí)檢索其內(nèi)的超鏈接并加入掃描隊(duì)列等待以后掃描。因?yàn)閃EB中廣泛使用超鏈接,所以一個(gè)Spider程序理論上可以訪問整個(gè)WEB頁面。為了保證網(wǎng)絡(luò)機(jī)器人遍歷信息的廣度和深度需要設(shè)定一些重要的鏈接并制定相關(guān)的掃描策略。1.2.2索引與搜索網(wǎng)絡(luò)機(jī)器人將遍歷得到的頁面存放在臨時(shí)數(shù)據(jù)庫中,如果通過SQL直接查詢信息速度將會(huì)難以忍受。為了提高檢索效率,需要建立索引,按照倒排文件的格式存放。如果索引不及時(shí)跟新的話,用戶用搜索引擎也不能檢索到。用戶輸入搜索條件后搜索程序?qū)⑼ㄟ^索引數(shù)據(jù)庫進(jìn)行檢索然后把符合查詢要求的數(shù)據(jù)庫按照一定的策略進(jìn)行分級排列并且返回給用戶。1.2.3Web服務(wù)器客戶一般通過瀏覽器進(jìn)行查詢,這就需要系統(tǒng)提供Web服務(wù)器并且與索引數(shù)據(jù)庫進(jìn)行連接??蛻粼跒g覽器中輸入查詢條件,Web服務(wù)器接收到客戶的查詢條件后在索引數(shù)據(jù)庫中進(jìn)行查詢、排列然后返回給客戶端。1.3搜索引擎的主要指標(biāo)及分析搜索引擎的主要指標(biāo)有響應(yīng)時(shí)間、召回率、準(zhǔn)確率、相關(guān)度等。這些指標(biāo)決定了搜索引擎的技術(shù)指標(biāo)。搜索引擎的技術(shù)指標(biāo)決定了搜索引擎的評價(jià)指標(biāo)。好的搜索引擎應(yīng)該是具有較快的反應(yīng)速度和高召回率、準(zhǔn)確率的,當(dāng)然這些都需要搜索引擎技術(shù)指標(biāo)來保障。召回率:一次搜索結(jié)果中符合用戶要求的數(shù)目與用戶查詢相關(guān)信息的總數(shù)之比。準(zhǔn)確率:一次搜索結(jié)果中符合用戶要求的數(shù)目與該次搜索結(jié)果總數(shù)之比。相關(guān)度:用戶查詢與搜索結(jié)果之間相似度的一種度量。精確度:對搜索結(jié)果的排序分級能力和對垃圾網(wǎng)頁的抗干擾能力。2網(wǎng)絡(luò)機(jī)器人2.1什么是網(wǎng)絡(luò)機(jī)器人網(wǎng)絡(luò)機(jī)器人又稱為Spider程序,是一種專業(yè)的Bot程序。用于查找大量的Web頁面。它從一個(gè)簡單的Web頁面上開始執(zhí)行,然后通過其超鏈接在訪問其他頁面,如此反復(fù)理論上可以掃描互聯(lián)網(wǎng)上的所有頁面。基于因特網(wǎng)的搜索引擎是Spider的最早應(yīng)用。例如搜索巨頭Google公司,就利用網(wǎng)絡(luò)機(jī)器人程序來遍歷Web站點(diǎn),以創(chuàng)建并維護(hù)這些大型數(shù)據(jù)庫。網(wǎng)絡(luò)機(jī)器人還可以通過掃描Web站點(diǎn)的主頁來得到這個(gè)站點(diǎn)的文件清單和層次機(jī)構(gòu)。還可以掃描出中斷的超鏈接和拼寫錯(cuò)誤等。2.2網(wǎng)絡(luò)機(jī)器人的結(jié)構(gòu)分析Internet是建立在很多相關(guān)協(xié)議基礎(chǔ)上的,而更復(fù)雜的協(xié)議又建立在系統(tǒng)層協(xié)議之上。Web就是建立在HTTP(HypertextTransferProtocol)協(xié)議基礎(chǔ)上,而HTTP又是建立在TCP/IP(TransmissionControlProtocol/InternetProtocol)協(xié)議之上,它同時(shí)也是一種Socket協(xié)議。所以網(wǎng)絡(luò)機(jī)器人本質(zhì)上是一種基于Socket的網(wǎng)絡(luò)程序。2.2.2Spider程序結(jié)構(gòu)網(wǎng)絡(luò)機(jī)器人必須從一個(gè)網(wǎng)頁遷移到另一個(gè)網(wǎng)頁,所以必須找到該頁面上的超連接。程序首先解析網(wǎng)頁的HTML代碼,查找該頁面內(nèi)的超連接然后通過遞歸和非遞歸兩種結(jié)構(gòu)來實(shí)現(xiàn)Spider程序。遞歸結(jié)構(gòu):遞歸是在一個(gè)方法中調(diào)用自己本身的程序設(shè)計(jì)技術(shù)。雖然比較容易實(shí)現(xiàn)但耗費(fèi)內(nèi)存且不能使用多線程技術(shù),故不適合大型項(xiàng)目。非遞歸結(jié)構(gòu):這種方法使用隊(duì)列的數(shù)據(jù)結(jié)構(gòu),當(dāng)Spider程序發(fā)現(xiàn)超連接后并不調(diào)用自己本身而是把超連接加入到等待隊(duì)列中。當(dāng)Spider程序掃描完當(dāng)前頁面后會(huì)根據(jù)制定的策略訪問隊(duì)列中的下一個(gè)超連接地址。雖然這里只描述了一個(gè)隊(duì)列,但在實(shí)際編程中用到了四個(gè)隊(duì)列,他們每個(gè)隊(duì)列都保存著同一處理狀態(tài)的URL。等待隊(duì)列:在這個(gè)隊(duì)列中,URL等待被Spider程序處理。新發(fā)現(xiàn)的URL也被加入到這個(gè)隊(duì)列中。處理隊(duì)列:當(dāng)Spider程序開始處理時(shí),他們被送到這個(gè)隊(duì)列中。錯(cuò)誤隊(duì)列:如果在解析網(wǎng)頁時(shí)出錯(cuò),URL將被送到這里。該隊(duì)列中的URL不能被移入其他隊(duì)列中。完成隊(duì)列:如果解析網(wǎng)頁沒有出錯(cuò),URL將被送到這里。該隊(duì)列中的URL不能被移入其它隊(duì)列中。在同一時(shí)間URL只能在一個(gè)隊(duì)列中,我們把它稱為URL的狀態(tài)。發(fā)現(xiàn)發(fā)現(xiàn)URL等待隊(duì)列運(yùn)行隊(duì)列完成隊(duì)列錯(cuò)誤隊(duì)列完成URL以上的圖表示了隊(duì)列的變化過程,在這個(gè)過程中,當(dāng)一個(gè)URL被加入到等待隊(duì)列中時(shí)Spider程序就會(huì)開始運(yùn)行。只要等待隊(duì)列中有一個(gè)網(wǎng)頁或Spider程序正在處理一個(gè)網(wǎng)頁,程序就會(huì)繼續(xù)他的工作。當(dāng)?shù)却?duì)列為空并且當(dāng)前沒有任何網(wǎng)頁時(shí),Spider程序就會(huì)停止它的工作。2.2.3如何構(gòu)造Spider程序在構(gòu)造Spider程序之前我們先了解下程序的各個(gè)部分是如何共同工作的。以及如何對這個(gè)程序進(jìn)行擴(kuò)展。IspiderReportable接口:這是一個(gè)必須實(shí)現(xiàn)的接口,可以通過回調(diào)函數(shù)接受Spider所遇到的頁面。接口定義了Spider向他的控制者發(fā)送的幾個(gè)事件。通過提供對每個(gè)事件的處理程序,可以創(chuàng)建各種Spider程序。下面是他的接口聲明:publicpublicinterfaceIspiderReportable{publicbooleanfoundInternalLink(Stringurl);publicbooleanfoundExternalLink(Stringurl);publicbooleanfoundOtherLink(Stringurl);publicvoidprocessPage(HTTPpage);publicvoidcompletePage(HTTPpage,booleanerror);publicbooleangetRemoveQuery();publicvoidSpiderComplete();}程序擴(kuò)展流程圖如下所示:把URL把URL加入等待隊(duì)列Spider程序工作完成等待隊(duì)列中是否有URL?否下載從等待隊(duì)列中得到的網(wǎng)頁,并將他送入運(yùn)行隊(duì)列中。是這個(gè)網(wǎng)頁包含其他超級連接嗎?將這一網(wǎng)頁送入完成隊(duì)列并繼續(xù)查看網(wǎng)頁上的下一個(gè)超連接是否為指向Web的連接?報(bào)告其他類型連接連接是否與網(wǎng)頁所在主機(jī)不同且只處理本地連接?報(bào)告外部連接報(bào)告網(wǎng)頁連接將連接加入等候隊(duì)列否是否是否是2.2.4如何提高程序性能Internet中擁有海量的Web頁面,如果開發(fā)出高效的Spider程序是非常重要的。下面就來介紹下幾種提高性能的技術(shù):(1)Java的多線程技術(shù)線程是通過程序的一條執(zhí)行路線。多線程是一個(gè)程序同時(shí)運(yùn)行多個(gè)任務(wù)的能力。它是在一個(gè)程序的內(nèi)部進(jìn)行分工合作。優(yōu)化程序的通常方法是確定瓶頸并改進(jìn)他。瓶頸是一個(gè)程序中最慢的部分,他限制了其他任務(wù)的運(yùn)行。據(jù)個(gè)例子說明:一個(gè)Spider程序需要下載十個(gè)頁面,要完成這一任務(wù),程序必須向服務(wù)器發(fā)出請求然后接受這些網(wǎng)頁。當(dāng)程序等待響應(yīng)的時(shí)候其他任務(wù)不能執(zhí)行,這就影響了程序的效率。如果用多線程技術(shù)可以讓這些網(wǎng)頁的等待時(shí)間合在一起,不用互相影響,這就可以極大的改進(jìn)程序性能。(2)數(shù)據(jù)庫技術(shù)當(dāng)Spider程序訪問一個(gè)大型Web站點(diǎn)時(shí),必須使用一種有效的方法來存儲(chǔ)站點(diǎn)隊(duì)列。這些隊(duì)列管理Spider程序必須維護(hù)大型網(wǎng)頁的列表。如果把他們放在內(nèi)存中將會(huì)是性能下降,所以我們可以把他們放在數(shù)據(jù)庫中減少系統(tǒng)資源的2.2.5網(wǎng)絡(luò)機(jī)器人的代碼分析程序結(jié)構(gòu)圖如下:程序代碼實(shí)現(xiàn)如下:packagepackagenews;importcom.heaton.bot.HTTP;importcom.heaton.bot.HTTPSocket;importcom.heaton.bot.ISpiderReportable;importcom.heaton.bot.IWorkloadStorable;importcom.heaton.bot.Spider;importcom.heaton.bot.SpiderInternalWorkload;/***構(gòu)造一個(gè)Bot程序*/publicclassSearcherimplementsISpiderReportable{publicstaticvoidmain(String[]args)throwsException{IWorkloadStorablewl=newSpiderInternalWorkload();Searcher_searcher=newSearcher();Spider_spider=newSpider(_searcher,"http://localhost:8080/myapp/News.htm",newHTTPSocket(),100,wl);_spider.setMaxBody(100);_spider.start();}//發(fā)現(xiàn)內(nèi)部連接時(shí)調(diào)用,url表示程序發(fā)現(xiàn)的URL,若返回true則加入作業(yè)中,否則不加入。publicbooleanfoundInternalLink(Stringurl){returnfalse;}//發(fā)現(xiàn)外部連接時(shí)調(diào)用,url表示程序所發(fā)現(xiàn)的URL,若返回true則把加入作業(yè)中,否則不加入。不加入。publicbooleanfoundExternalLink(Stringurl){returnfalse;}//當(dāng)發(fā)現(xiàn)其他連接時(shí)調(diào)用這個(gè)方法。其他連接指的是非HTML網(wǎng)頁,可能是E-mail或者FTPpublicbooleanfoundOtherLink(Stringurl){returnfalse;}//用于處理網(wǎng)頁,這是Spider程序要完成的實(shí)際工作。publicvoidprocessPage(HTTPhttp){System.out.println("掃描網(wǎng)頁:"+http.getURL());newHTMLParse(http).start();}//用來請求一個(gè)被處理的網(wǎng)頁。publicvoidcompletePage(HTTPhttp,booleanerror){}//由Spider程序調(diào)用以確定查詢字符串是否應(yīng)刪除。如果隊(duì)列中的字符串應(yīng)當(dāng)刪除,方法返回真。publicbooleangetRemoveQuery(){returntrue;}//當(dāng)Spider程序沒有剩余的工作時(shí)調(diào)用這個(gè)方法。publicvoidspiderComplete(){}}3基于lucene的索引與搜索、tomcat服務(wù)器3.1什么是Lucene全文檢索Lucene是JakartaApache的開源項(xiàng)目。它是一個(gè)用Java寫的全文索引引擎工具包,可以方便的嵌入到各種應(yīng)用中實(shí)現(xiàn)針對應(yīng)用的全文索引/檢索功能。3.2Lucene的原理分析3.2.1客戶端設(shè)計(jì)一個(gè)良好的查詢界面非常重要,例如Googl就以她簡潔的查詢界面而聞名。我在設(shè)計(jì)的時(shí)候也充分考慮了實(shí)用性和簡潔性。查詢界面截圖如下:搜索結(jié)果截圖如下:搜索結(jié)果截圖如下:3.2.2全文檢索的實(shí)現(xiàn)機(jī)制Lucene的API接口設(shè)計(jì)的比較通用,輸入輸出結(jié)構(gòu)都很像數(shù)據(jù)庫的表==>記錄==>字段,所以很多傳統(tǒng)的應(yīng)用的文件、數(shù)據(jù)庫等都可以比較方便的映射到Lucene的存儲(chǔ)結(jié)構(gòu)和接口中。總體上看:可以先把Lucene當(dāng)成一個(gè)支持全文索引的數(shù)據(jù)庫系統(tǒng)。索引數(shù)據(jù)源:索引數(shù)據(jù)源:doc(field1,field2...)doc(field1,field2...)\indexer/_____________|LuceneIndex|/searcher\結(jié)果輸出:Hits(doc(field1,field2)doc(field1...))Document:一個(gè)需要進(jìn)行索引的“單元”,一個(gè)Document由多個(gè)字段組成Field:字段Hits:查詢結(jié)果集,由匹配的Document組成3.2.3Lucene的索引效率通常書籍后面常常附關(guān)鍵詞索引表(比如:北京:12,34頁,上海:3,77頁??),它能夠幫助讀者比較快地找到相關(guān)內(nèi)容的頁碼。而數(shù)據(jù)庫索引能夠大大提高查詢的速度原理也是一樣,想像一下通過書后面的索引查找的速度要比一頁一頁地翻內(nèi)容高多少倍??而索引之所以效率高,另外一個(gè)原因是它是排好序的。對于檢索系統(tǒng)來說核心是一個(gè)排序問題。由于數(shù)據(jù)庫索引不是為全文索引設(shè)計(jì)的,因此,使用like"%keyword%"時(shí),數(shù)據(jù)庫索引是不起作用的,在使用like查詢時(shí),搜索過程又變成類似于一頁頁翻書的遍歷過程了,所以對于含有模糊查詢的數(shù)據(jù)庫服務(wù)來說,LIKE對性能的危害是極大的。如果是需要對多個(gè)關(guān)鍵詞進(jìn)行模糊匹配:like"%keyword1%"andlike"%keyword2%"...其效率也就可想而知了。所以建立一個(gè)高效檢索系統(tǒng)的關(guān)鍵是建立一個(gè)類似于科技索引一樣的反向索引機(jī)制,將數(shù)據(jù)源(比如多篇文章)排序順序存儲(chǔ)的同時(shí),有另外一個(gè)排好序的關(guān)鍵詞列表,用于存儲(chǔ)關(guān)鍵詞==>文章映射關(guān)系,利用這樣的映射關(guān)系索引:[關(guān)鍵詞==>出現(xiàn)關(guān)鍵詞的文章編號(hào),出現(xiàn)次數(shù)(甚至包括位置:起始偏移量,結(jié)束偏移量),出現(xiàn)頻率],檢索過程就是把模糊查詢變成多個(gè)可以利用索引的精確查詢的邏輯組合的過程。從而大大提高了多關(guān)鍵詞查詢的效率,所以,全文檢索問題歸結(jié)到最后是一個(gè)排序問題。由此可以看出模糊查詢相對數(shù)據(jù)庫的精確查詢是一個(gè)非常不確定的問題,這也是大部分?jǐn)?shù)據(jù)庫對全文檢索支持有限的原因。Lucene最核心的特征是通過特殊的索引結(jié)構(gòu)實(shí)現(xiàn)了傳統(tǒng)數(shù)據(jù)庫不擅長的全文索引機(jī)制,并提供了擴(kuò)展接口,以方便針對不同應(yīng)用的定制??梢酝ㄟ^以下表格對比一下數(shù)據(jù)庫的模糊查詢:3.2.4中文切分詞機(jī)制對于中文來說,全文索引首先還要解決一個(gè)語言分析的問題,對于英文來說,語句中單詞之間是天然通過空格分開的,但亞洲語言的中日韓文語句中的字是一個(gè)字挨一個(gè),所有,首先要把語句中按“詞”進(jìn)行索引的話,這個(gè)詞如何切分出來就是一個(gè)很大的問題。首先,肯定不能用單個(gè)字符作(si-gram)為索引單元,否則查“上?!睍r(shí),不能讓含有“海上”也匹配。但一句話:“北京天安門”,計(jì)算機(jī)如何按照中文的語言習(xí)慣進(jìn)行切分呢?“北京天安門”還是“北京天安門”?讓計(jì)算機(jī)能夠按照語言習(xí)慣進(jìn)行切分,往往需要機(jī)器有一個(gè)比較豐富的詞庫才能夠比較準(zhǔn)確的識(shí)別出語句中的單詞。另外一個(gè)解決的辦法是采用自動(dòng)切分算法:將單詞按照2元語法(bigram)方式切分出來,比如:"北京天安門"==>"北京京天天安安門"。這樣,在查詢的時(shí)候,無論是查詢"北京"還是查詢"天安門",將查詢詞組按同樣的規(guī)則進(jìn)行切分:"北京","天安安門",多個(gè)關(guān)鍵詞之間按與"and"的關(guān)系組合,同樣能夠正確地映射到相應(yīng)的索引中。這種方式對于其他亞洲語言:韓文,日文都是通用的?;谧詣?dòng)切分的最大優(yōu)點(diǎn)是沒有詞表維護(hù)成本,實(shí)現(xiàn)簡單,缺點(diǎn)是索引效率低,但對于中小型應(yīng)用來說,基于2元語法的切分還是夠用的?;?元切分后的索引一般大小和源文件差不多,而對于英文,索引文件一般只有原文件的30%-40%不同,自動(dòng)切分詞表切分實(shí)現(xiàn)實(shí)現(xiàn)非常簡單實(shí)現(xiàn)復(fù)雜查詢增加了查詢分析的復(fù)雜程度,適于實(shí)現(xiàn)比較復(fù)雜的查詢語法規(guī)則存儲(chǔ)效率索引冗余大,索引幾乎和原文一樣大索引效率高,為原文大小的30%左右維護(hù)成本無詞表維護(hù)成本詞表維護(hù)成本非常高:中日韓等語言需要分別維護(hù)。還需要包括詞頻統(tǒng)計(jì)等內(nèi)容適用領(lǐng)域嵌入式系統(tǒng):運(yùn)行環(huán)境資源有限分布式系統(tǒng):無詞表同步問題多語言環(huán)境:無詞表維護(hù)成本對查詢和存儲(chǔ)效率要求高的專業(yè)搜索引擎3.2.5服務(wù)端設(shè)計(jì)主要利用JavaTMServlet技術(shù)實(shí)現(xiàn),用戶通過GET方法從客戶端向服務(wù)端提交查詢條件,服務(wù)端通過Tomcat的Servlet容器接受并分析提交參數(shù),再調(diào)用lucene的開發(fā)包進(jìn)行搜索操作。最后把搜索的結(jié)果以HTTP消息包的形式發(fā)送至客戶端,從而完成一次搜索操作。Servlet是一種獨(dú)立于平臺(tái)和協(xié)議的服務(wù)器端的Java應(yīng)用程序,可以生成動(dòng)態(tài)的Web頁面。它擔(dān)當(dāng)Web瀏覽器或其他HTTP客戶程序發(fā)出請求,與HTTP服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序之間的中間層。Servlet是位于Web服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動(dòng)的Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī)。服務(wù)端Servlet程序的結(jié)構(gòu)如下:實(shí)現(xiàn)的關(guān)鍵代碼如下:publicvoidSearch(Stringqc,PrintWriterout)throwsException{//從索引目錄創(chuàng)建索引IndexSearcher_searcher=newIndexSearcher("c:\\news\\index");//創(chuàng)建標(biāo)準(zhǔn)分析器Analyzeranalyzer=newChineseAnalyzer();//查詢條件Stringline=qc;//Query是一個(gè)抽象類Queryquery=QueryParser.parse(line,"title",analyzer);3.3Lucene與Spider的結(jié)合首先構(gòu)造一個(gè)Index類用來實(shí)現(xiàn)對內(nèi)容進(jìn)行索引。先在C盤新建一個(gè)News文件夾,再在News下面新建一個(gè)index子文件夾,這一步是必需要的,因?yàn)檫@個(gè)文件夾是用來保存搜索到的結(jié)果。否則當(dāng)搜索所要的網(wǎng)頁之后,從而導(dǎo)致無法得到結(jié)果。先進(jìn)入JBuilder9.0的安裝目錄下你所使用的tomcat文件夾,運(yùn)行文件夾里的startup.bat,這樣就啟動(dòng)了JBuilder9.0自帶的tomcat服務(wù)器?,F(xiàn)在你用JBuilder9.0打開News這個(gè)工程運(yùn)行,運(yùn)行結(jié)果就會(huì)顯示搜索到多少條新聞。如果不運(yùn)行tomcat服務(wù)器是搜索不到新聞的。網(wǎng)絡(luò)蜘蛛是一種能自動(dòng)到網(wǎng)上查找信息的一種程序,該程序具有高度的自動(dòng)性,只要告訴他一個(gè)網(wǎng)站,他就可以從這個(gè)網(wǎng)站開始依次通過該網(wǎng)站的鏈接自動(dòng)抓取鏈接內(nèi)容以及網(wǎng)址,然后就順著這些鏈接一直抓下去。代碼分析如下:packagenews;importjava.io.IOException;import.ChineseAnalyzer;importorg.apache.lucene.document.Document;importorg.apache.lucene.document.Field;importorg.apache.lucene.index.IndexWriter;publicclassIndex{IndexWriter_writer=null;Index()throwsException{_writer=newIndexWriter("c:\\News\\index",newChineseAnalyzer(),true);}/**/***把每條新聞加入索引中*@paramurl新聞的url*@paramtitle新聞的標(biāo)題*@throwsjava.lang.Exception*/voidAddNews(Stringurl,Stringtitle)throwsException{Document_doc=newDocument();_doc.add(Field.Text("title",title));_doc.add(Field.UnIndexed("url",url));_writer.addDocument(_doc);}/***優(yōu)化并且清理資源*@throwsjava.lang.Exception*/voidclose()throwsException{_writer.optimize();_writer.close();}}然后構(gòu)造一個(gè)HTML解析類,把通過bot程序收集的新聞內(nèi)容進(jìn)行索引。3.3.1如何解析HTML因?yàn)閃eb中的信息都是建立在HTML協(xié)議之上的,所以網(wǎng)絡(luò)機(jī)器人在檢索網(wǎng)頁時(shí)的第一個(gè)問題就是如何解析HTML。在解決如何解析之前,先來介紹下HTML中的幾種數(shù)據(jù)。文本:除了腳本和標(biāo)簽之外的所有數(shù)據(jù)。注釋:程序員留下的說明文字,對用戶是不可見的。簡單標(biāo)簽:由單個(gè)表示的HTML標(biāo)簽。(4)開始標(biāo)簽和結(jié)束標(biāo)簽:用來控制所包含的HTML代碼。我們在進(jìn)行解析的時(shí)候不用關(guān)心所有的標(biāo)簽,只需要對其中幾種重要的進(jìn)行解析即可。超連接標(biāo)簽:超連接定義了WWW通過Internet鏈接文檔的功能。他們的主要目的是使用戶能夠任意遷移到新的頁面,這正是網(wǎng)絡(luò)機(jī)器人最關(guān)心的標(biāo)簽。圖像映射標(biāo)簽:圖像映射是另一種非常重要的標(biāo)簽。它可以讓用戶通過點(diǎn)擊圖片來遷移到新的頁面中。表單標(biāo)簽:表單是Web頁面中可以輸入數(shù)據(jù)的單元。許多站點(diǎn)讓用戶填寫數(shù)據(jù)然后通過點(diǎn)擊按鈕來提交內(nèi)容,這就是表單的典型應(yīng)用。表格標(biāo)簽:表格是HTML的構(gòu)成部分,通常用來格式化存放、顯示數(shù)據(jù)。我們在具體解析這些HTMl標(biāo)簽有兩種方法:通過JavaTM中的Swing類來解析或者通過Bot包中的HTMLPage類來解析,本人在實(shí)際編程中采用后者。Bot包中的HTMLPage類用來從指定URL中讀取數(shù)據(jù)并檢索出有用的信息。下面給出該類幾種重要的方法。HTMLPageHTMLPage構(gòu)造函數(shù)構(gòu)造對象并指定用于通訊的HTTP對象PublicHTMLPage(HTTPhttp)GetForms方法獲取最后一次調(diào)用Open方法檢索到的表單清單PublicVectorgetForms()GetHTTP方法獲取發(fā)送給構(gòu)造函數(shù)的HTTP對象PublicHTTPgetHTTP()GetImage方法獲取指定頁面的圖片清單PublicVectorgetImage()GetLinks方法獲取指定頁面的連接清單PublicVectorgetLinks()Open方法打開一個(gè)頁面并讀入該頁面,若指定了回調(diào)對象則給出所有該對象數(shù)據(jù)Publicvoidopen(Stringurl,HTMLEditorKit.ParserCallbacka)代碼分析如下:packagenews;importjava.util.Iterator;importjava.util.Vector;importcom.heaton.bot.HTMLPage;importcom.heaton.bot.HTTP;importcom.heaton.bot.Link;publicclassHTMLParse{HTTP_http=null;publicHTMLParse(HTTPhttp){_http=http;}/***對Web頁面進(jìn)行解析后建立索引*/publicvoidstart(){try{HTMLPage_page=newHTMLPage(_http);_page.open(_http.getURL(),null);Vector_links=_page.getLinks();Index_index=newIndex();Iterator_it=_links.iterator();intn=0;while(_it.hasNext()){Link_link=(Link)_it.next();String_herf=input(_link.getHREF().trim());String_title=input(_link.getPrompt().trim());_index.AddNews(_herf,_title);n++;}System.out.println("共掃描到"+n+"條新聞");_index.close();}catch(Exceptionex){System.out.println(ex);}}/***解決java中的中文問題*@paramstr輸入的中文*@return經(jīng)過解碼的中文*/publicstaticStringinput(Stringstr){Stringtemp=null;if(str!=null){try{temp=newString(str.getBytes("ISO8859_1"));}catch(Exceptione){}}returntemp;}}3.4基于Tomcat的Web服務(wù)器Web服務(wù)器是在網(wǎng)絡(luò)中為實(shí)現(xiàn)信息發(fā)布、資料查詢、數(shù)據(jù)處理等諸多應(yīng)用搭建基本平臺(tái)的服務(wù)器。Web服務(wù)器如何工作:在Web頁面處理中大致可分為三個(gè)步驟,第一步,Web瀏覽器向一個(gè)特定的服務(wù)器發(fā)出Web頁面請求;第二步,Web服務(wù)器接收到Web頁面請求后,尋找所請求的Web頁面,并將所請求的Web頁面?zhèn)魉徒oWeb瀏覽器;第三步,Web服務(wù)器接收到所請求的Web頁面,并將它顯示出來。Tomcat是一個(gè)開放源代碼、運(yùn)行servlet和JSPWeb應(yīng)用軟件的基于Java的Web應(yīng)用軟件容器。Tomcat由Apache-Jakarta子項(xiàng)目支持并由來自開放性源代碼Java社區(qū)的志愿者進(jìn)行維護(hù)。TomcatServer是根據(jù)servlet和JSP規(guī)范進(jìn)行執(zhí)行的,因此我們就可以說TomcatServer也實(shí)行了Apache-Jakarta規(guī)范且比絕大多數(shù)商業(yè)應(yīng)用軟件服務(wù)器要好。3.5在Tomcat上部署項(xiàng)目Tomcat中的應(yīng)用程序是一個(gè)WAR(WebArchive)文件。WAR是Sun提出的一種Web應(yīng)用程序格式,與JAR類似,也是許多文件的一個(gè)壓縮包。這個(gè)包中的文件按一定目錄結(jié)構(gòu)來組織:通常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會(huì)有一個(gè)WEB-INF目錄,這個(gè)目錄很重要。通常在WEB-INF目錄下有一個(gè)web.xml文件和一個(gè)classes目錄,web.xml是這個(gè)應(yīng)用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當(dāng)然也可以放到系統(tǒng)的CLASSPATH中。在Tomcat中,應(yīng)用程序的部署很簡單,你只需將你的程序放到Tomcat的webapp目錄下,Tomcat會(huì)自動(dòng)檢測到這個(gè)文件,并將其解壓。你在瀏覽器中訪問這個(gè)應(yīng)用的Jsp時(shí),通常第一次會(huì)很慢,因?yàn)門omcat要將Jsp轉(zhuǎn)化為Servlet文件,然后編譯。編譯以后,訪問將會(huì)很快。4搜索引擎策略4.1簡介隨著信息多元化的增長,千篇一律的給所有用戶同一個(gè)入口顯然已經(jīng)不能滿足特定用戶更深入的查詢需求。同時(shí),這樣的通用搜索引擎在目前的硬件條件下,要及時(shí)更新以得到互聯(lián)網(wǎng)上較全面的信息是不太可能的。針對這種情況,我們需要一個(gè)分類細(xì)致精確、數(shù)據(jù)全面深入、更新及時(shí)的面向主題的搜索引擎。由于主題搜索運(yùn)用了人工分類以及特征提取等智能化策略,因此它比上面提到的前三代的搜索引擎將更加有效和準(zhǔn)確,我們將這類完善的主題搜索引擎稱為第四代搜索引擎。4.2面向主題的搜索策略4.2.1導(dǎo)向詞導(dǎo)向詞就是一組關(guān)鍵詞,它們會(huì)引導(dǎo)搜索器按照一定順序搜索整個(gè)網(wǎng)絡(luò),使得搜索引擎可以在最短的時(shí)間里面得到最全面的跟某一個(gè)主題相關(guān)的信息。通過設(shè)置導(dǎo)向詞以及它們對應(yīng)的不同權(quán)值,所有標(biāo)題、作者、正文或超連接文本中含有某一導(dǎo)向詞的網(wǎng)頁都會(huì)被賦予較高的權(quán)值,在搜索的時(shí)候會(huì)優(yōu)先考慮。搜索器在向主控程序獲得URL的時(shí)候也是按照權(quán)值由高到低的順序。反之,搜索器在向主控程序提交新的URL和它的權(quán)值的時(shí)候,主控程序會(huì)按照權(quán)值預(yù)先排序,以便下一次有序的發(fā)給搜索器。4.2.2網(wǎng)頁評級在考慮一個(gè)網(wǎng)頁被另一個(gè)網(wǎng)頁的引用時(shí)候,不是單純的將被引用網(wǎng)頁的HitNumber加一,而是將引用網(wǎng)頁的連接數(shù)作為權(quán),同時(shí)將該引用網(wǎng)頁的重要性也考慮進(jìn)來(看看上面提到的例子,Yahoo!引用的網(wǎng)頁顯然比個(gè)人網(wǎng)站引用的網(wǎng)頁重要,因?yàn)閅ahoo!本身很重要),就可以得到擴(kuò)展后的網(wǎng)頁評分。最早提出網(wǎng)頁評分的計(jì)算方法是Google。它們提出了一個(gè)“隨機(jī)沖浪”模型來描述網(wǎng)絡(luò)用戶對網(wǎng)頁的訪問行為。模型假設(shè)如下:(1)用戶隨機(jī)的選擇一個(gè)網(wǎng)頁作為上網(wǎng)的起始網(wǎng)頁;(2)看完這個(gè)網(wǎng)頁后,從該網(wǎng)頁內(nèi)所含的超鏈內(nèi)隨機(jī)的選擇一個(gè)頁面繼續(xù)進(jìn)行瀏覽;(3)沿著超鏈前進(jìn)了一定數(shù)目的網(wǎng)頁后,用戶對這個(gè)主題感到厭倦,重新隨機(jī)選擇一個(gè)網(wǎng)頁進(jìn)行瀏覽,并重復(fù)2和3。按照以上的用戶行為模型,每個(gè)網(wǎng)頁可能被訪問到的次數(shù)就是該網(wǎng)頁的鏈接權(quán)值。如何計(jì)算這個(gè)權(quán)值呢?PageRank采用以下公式進(jìn)行計(jì)算:W(1d)dNlWij i,jni1,ij i其中Wj代表第j個(gè)網(wǎng)頁的權(quán)值;lij只取0、1值,代表從網(wǎng)頁i到網(wǎng)頁j是否存在鏈接;ni代表網(wǎng)頁i有多少個(gè)鏈向其它網(wǎng)頁的鏈接;d代表“隨機(jī)沖浪”中沿著鏈接訪問網(wǎng)頁的平均次數(shù)。選擇合適的數(shù)值,遞歸的使用以上公式,即可得到理想的網(wǎng)頁鏈接權(quán)值。該方法能夠大幅度的提高簡單檢索返回結(jié)果的質(zhì)量,同時(shí)能夠有效的防止網(wǎng)頁編寫者對搜索引擎的欺騙。因此可以將其廣泛的應(yīng)用在檢索器提供給用戶的網(wǎng)頁排序上,對于網(wǎng)頁評分越高的網(wǎng)頁,就排的越前。4.2.3權(quán)威網(wǎng)頁和中心網(wǎng)頁權(quán)威網(wǎng)頁:顧名思義,是給定主題底下的一系列重要的權(quán)威的網(wǎng)頁。其重要性和權(quán)威性主要體現(xiàn)在以下兩點(diǎn):從單個(gè)網(wǎng)頁來看,它的網(wǎng)頁內(nèi)容本身對于這個(gè)給定主題來說是重要的;從這個(gè)網(wǎng)頁在整個(gè)互聯(lián)網(wǎng)重的地位來看,這個(gè)網(wǎng)頁是被其他網(wǎng)頁承認(rèn)為權(quán)威的,這主要體現(xiàn)在跟這個(gè)主題相關(guān)的很多網(wǎng)頁都有鏈接指向這個(gè)網(wǎng)頁。由此可見,權(quán)威網(wǎng)頁對于主題搜索引擎的實(shí)現(xiàn)有很重大的意義。主題搜索引擎一個(gè)很關(guān)鍵的任務(wù)就是從互聯(lián)網(wǎng)上無數(shù)的網(wǎng)頁之中最快最準(zhǔn)的找出這些可數(shù)的權(quán)威網(wǎng)頁,并為他們建立索引。這也是有效區(qū)別主題搜索引擎和前三代傳統(tǒng)通用搜索引擎的重要特征。中心網(wǎng)頁:是包含很多指向權(quán)威網(wǎng)頁的超鏈接的網(wǎng)頁。最典型中心網(wǎng)頁的一個(gè)例子是Yahoo!,它的目錄結(jié)構(gòu)指向了很多主題的權(quán)威網(wǎng)頁,使得它兼任了很多主題的中心網(wǎng)頁。由中心網(wǎng)頁出發(fā),輕而易舉的就會(huì)到達(dá)大量的權(quán)威網(wǎng)頁。因此,它對于主題搜索引擎的實(shí)現(xiàn)也起了很大的意義。權(quán)威網(wǎng)頁和中心網(wǎng)頁之間是一種互相促進(jìn)的關(guān)系:一個(gè)好的中心網(wǎng)頁必然要有超鏈接指向多個(gè)權(quán)威網(wǎng)頁;一個(gè)好的權(quán)威網(wǎng)頁反過來也必然被多個(gè)中心網(wǎng)頁所鏈接。結(jié)論以上對基于因特網(wǎng)的搜索引擎結(jié)構(gòu)和性能指標(biāo)進(jìn)行了分析,本人實(shí)現(xiàn)了一個(gè)簡單的搜索引擎——新聞搜索引擎。首先介紹了網(wǎng)絡(luò)機(jī)器人的基本概念,然后具體分析了Spider程序的結(jié)構(gòu)和功能。在最后還結(jié)合具體代碼進(jìn)行了詳細(xì)說明。在進(jìn)行海量數(shù)據(jù)搜索時(shí),如果使用單純的數(shù)據(jù)庫技術(shù),那將是非常痛苦的。速度將是極大的瓶頸。所以提出了使用全文搜索引擎Lucene進(jìn)行索引、搜索。還結(jié)合了具體代碼說明了如何把Lucene全文搜索引擎和Spider程序互相集合來實(shí)現(xiàn)新聞搜索的功能。介紹了如何構(gòu)架基于Tomcat的Web服務(wù)器,使得用戶通過瀏覽器進(jìn)行新聞的搜索,最后還對Tomcat如何部署進(jìn)行了說明。最后介紹了面向主題的搜索策略,并作了詳細(xì)闡述。雖然在新聞搜索中并沒有應(yīng)用到搜索策略,但是對于WWW搜索引擎來說,搜索策略是極其重要的。他直接關(guān)系到搜索的質(zhì)量以及匹配度等性能。參考文獻(xiàn)徐寶文張衛(wèi)豐.搜索引擎與信息獲取技術(shù)[M].北京:清華大學(xué)出版社,2003,04.李曉明閆宏飛王繼民.搜索引擎:原理、技術(shù)與系統(tǒng)[M].北京:科學(xué)出版社,2005,04.盧亮張博文.搜索引擎原理、實(shí)踐與應(yīng)用[M].北京:電子工業(yè)出版社,2007,09.羅旭.主題搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)[M].北京:科學(xué)出版社,2002,03.聶哲.基于WEB的面向主題搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2003,02.佘正平.搜索引擎的關(guān)鍵詞分析與處理[J].情報(bào)探索,2008,05.車東.基于Java的全文搜索引擎Lucene[M].北京:電子工業(yè)出版社,2000,05.何會(huì)民韓東霞.基于Lucene的網(wǎng)絡(luò)新聞搜索引擎研究與實(shí)現(xiàn)[J].商場現(xiàn)代化,2008,09.曾偉輝.深層網(wǎng)絡(luò)爬蟲研究綜述[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008,05.房志峰.中文搜索引擎中的分詞技術(shù)研究[J].科學(xué)技術(shù)與工程.2008,09.埃克爾著(美),陳昊鵬譯.JAVA編程思想[M].北京:機(jī)械工業(yè)出版社,2007,06.致謝在此論文完成之際,我的大學(xué)生活即將結(jié)束。在這三四年的學(xué)習(xí)生活中,我不但在學(xué)業(yè)上受益匪淺,而且養(yǎng)成了嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度。首先,要感謝我的導(dǎo)師曾怡老師。本論文從立意選題、觀點(diǎn)的舍取到文章思路的梳理直至觀點(diǎn)的形成,曾老師都嚴(yán)格把關(guān),精心推敲,不斷從內(nèi)容和形式上豐富和完善了我的研究成果。文章初稿完成之后,曾老師又認(rèn)真審閱、修改,對此我表示深深的敬意和由衷的感謝。其次,還要感謝在大學(xué)期間所有給我上過課的老師,是他們引領(lǐng)我在專業(yè)領(lǐng)域探索前行,廣博地汲取專業(yè)知識(shí)和信息。同時(shí),還要感謝所有幫助過我的老師、同學(xué)們和家人,為我在論文寫作中提供了諸多幫助和支持。由于本人的研究水平有限,文中不足之處在所難免,懇請各位老師和同學(xué)們批評指正。

畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包含我為獲得及其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過的材料。對本研究提供過幫助和做出過貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說明并表示了謝意。作者簽名:日期:指導(dǎo)教師簽名:日期:使用授權(quán)說明本人完全了解大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝?、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)校可以公布論文的部分或全部內(nèi)容。作者簽名:日期:學(xué)位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫的成果作品。對本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。作者簽名:日期:年月日學(xué)位論文版權(quán)使用授權(quán)書本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。作者簽名:日期:年月日導(dǎo)師簽名:日期:年月日指導(dǎo)教師評閱書指導(dǎo)教師評價(jià):一、撰寫(設(shè)計(jì))過程學(xué)生在論文(設(shè)計(jì))過程中的治學(xué)態(tài)度、工作精神□優(yōu)□良□中□及格□不及格學(xué)生掌握專業(yè)知識(shí)、技能的扎實(shí)程度□優(yōu)□良□中□及格□不及格學(xué)生綜合運(yùn)用所學(xué)知識(shí)和專業(yè)技能分析和解決問題的能力□優(yōu)□良□中□及格□不及格研究方法的科學(xué)性;技術(shù)線路的可行性;設(shè)計(jì)方案的合理性□優(yōu)□良□中□及格□不及格完成畢業(yè)論文(設(shè)計(jì))期間的出勤情況□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))質(zhì)量論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格三、論文(設(shè)計(jì))水平論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績:□優(yōu)□良□中□及格□不及格(在所選等級前的□內(nèi)畫“√”)指導(dǎo)教師:(簽名)單位:(蓋章)年月日評閱教師評閱書評閱教師評價(jià):一、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績:□優(yōu)□良□中□及格□不及格(在所選等級前的□內(nèi)畫“√”)評閱教師:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論