搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第1頁(yè)
搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第2頁(yè)
搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第3頁(yè)
搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第4頁(yè)
搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余20頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、 搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)摘要隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)上的數(shù)據(jù)也隨著爆炸式地增長(zhǎng)。如何最快速篩選出對(duì)我們有用的信息成了主要問(wèn)題。搜索引擎是指根據(jù)一定的策略、運(yùn)用特定的計(jì)算機(jī)程序從互聯(lián)網(wǎng)上搜集信息,在對(duì)信息進(jìn)行組織和處理后,為用戶提供檢索服務(wù),將用戶檢索相關(guān)的信息展示給用戶的系統(tǒng)。搜索引擎已經(jīng)成為互聯(lián)網(wǎng)不可缺少的工具,可以幫助人們更快的找到所要的內(nèi)容和信息。提高做事的效率,使互聯(lián)網(wǎng)資源高效的利用。本文主要介紹了搜索引擎是從指定的Web頁(yè)面中按照超鏈接進(jìn)行采集、解析,并把解析出來(lái)的每條數(shù)據(jù)后加入數(shù)據(jù)庫(kù)。用戶可以通過(guò)客戶端發(fā)送搜索請(qǐng)求,Web服務(wù)端對(duì)數(shù)據(jù)進(jìn)行篩選、排序,最后展示到客戶端。對(duì)信息的采集主

2、要采用了HTML解析技術(shù)、通過(guò)迭代解析的方式不斷采集數(shù)據(jù)。搜索引擎的整體構(gòu)架了采用了MVC設(shè)計(jì)模型,采用了JSP技術(shù)和Struts2技術(shù),用關(guān)鍵詞匹配算法篩選結(jié)果,搜索結(jié)果匹配度良好。初步完成了搜索引擎的主要功能。關(guān)鍵詞:搜索,數(shù)據(jù)庫(kù),JSP,Struts2AbstractWith the rapid development of the Internet, the data on the network with explosive growth. How to quickly screen out most of our useful information became the main

3、 problem. Search engines is according to a certain strategy, using specific computer program information from the Internet. In the information organization and processed, to provide users with retrieval service,show the result to user. Search engine has become an indispensable tool of the Internet,

4、can help people faster to find the content and information,and improve the efficiency of work, make the Internet resources efficient use.This article mainly introduced the search engine from the specified Web page links according to the collection, analysis, and add the data whitch analytic by servi

5、ce to the database. The user can through the client sends the search request, web server for data screening, sort, finally thow to client. For the collection of the information of the mainly adopts HTML analytical technology, through the iterative analytical way to collect data continuously. The sea

6、rch engines overall frame based on the MVC design model,use JSP technology and struts2 technology. Use keywords matching algorithm screening results, search results matching degree is good. Initially completed the search engines function.Keywords: search, database, JSP, struts2目錄 TOC o 1-3 h z u HYP

7、ERLINK l _Toc344195412 摘要 PAGEREF _Toc344195412 h 2 HYPERLINK l _Toc344195413 Abstract PAGEREF _Toc344195413 h 3 HYPERLINK l _Toc344195414 第一章緒論 PAGEREF _Toc344195414 h 5 HYPERLINK l _Toc344195415 第一節(jié)課題研究的目的和意義 PAGEREF _Toc344195415 h 5 HYPERLINK l _Toc344195416 第二節(jié)搜索引擎的現(xiàn)狀與前景 PAGEREF _Toc344195416 h

8、 5 HYPERLINK l _Toc344195417 一、搜索引擎的現(xiàn)狀: PAGEREF _Toc344195417 h 5 HYPERLINK l _Toc344195418 二、搜索引擎的前景: PAGEREF _Toc344195418 h 6 HYPERLINK l _Toc344195419 第二章需求分析 PAGEREF _Toc344195419 h 6 HYPERLINK l _Toc344195420 第一節(jié)開(kāi)發(fā)背景 PAGEREF _Toc344195420 h 6 HYPERLINK l _Toc344195421 第二節(jié)系統(tǒng)功能 PAGEREF _Toc34419

9、5421 h 6 HYPERLINK l _Toc344195422 一、功能劃分 PAGEREF _Toc344195422 h 6 HYPERLINK l _Toc344195423 二、功能描述 PAGEREF _Toc344195423 h 6 HYPERLINK l _Toc344195424 第三節(jié)相關(guān)技術(shù)及工具簡(jiǎn)介 PAGEREF _Toc344195424 h 7 HYPERLINK l _Toc344195425 一、HTML語(yǔ)言簡(jiǎn)介 PAGEREF _Toc344195425 h 7 HYPERLINK l _Toc344195426 二、JavaScript語(yǔ)言簡(jiǎn)介 PA

10、GEREF _Toc344195426 h 7 HYPERLINK l _Toc344195427 三、JSP簡(jiǎn)介 PAGEREF _Toc344195427 h 8 HYPERLINK l _Toc344195428 四、Web開(kāi)發(fā)輕平臺(tái)Tomcat簡(jiǎn)介 PAGEREF _Toc344195428 h 8 HYPERLINK l _Toc344195429 五、MYSQL數(shù)據(jù)庫(kù)簡(jiǎn)介 PAGEREF _Toc344195429 h 8 HYPERLINK l _Toc344195430 第三章系統(tǒng)設(shè)計(jì) PAGEREF _Toc344195430 h 9 HYPERLINK l _Toc3441

11、95431 第一節(jié)系統(tǒng)整體架構(gòu) PAGEREF _Toc344195431 h 9 HYPERLINK l _Toc344195432 第二節(jié)系統(tǒng)模塊設(shè)計(jì) PAGEREF _Toc344195432 h 10 HYPERLINK l _Toc344195433 一、數(shù)據(jù)采集模塊 PAGEREF _Toc344195433 h 10 HYPERLINK l _Toc344195434 二、搜索引擎模塊 PAGEREF _Toc344195434 h 11 HYPERLINK l _Toc344195435 第三節(jié)數(shù)據(jù)庫(kù)設(shè)計(jì) PAGEREF _Toc344195435 h 11 HYPERLINK

12、 l _Toc344195436 第四章系統(tǒng)實(shí)現(xiàn) PAGEREF _Toc344195436 h 13 HYPERLINK l _Toc344195437 第一節(jié)數(shù)據(jù)采集 PAGEREF _Toc344195437 h 13 HYPERLINK l _Toc344195438 一、解析數(shù)據(jù)的實(shí)現(xiàn) PAGEREF _Toc344195438 h 13 HYPERLINK l _Toc344195439 第二節(jié)搜索引擎的實(shí)現(xiàn) PAGEREF _Toc344195439 h 16 HYPERLINK l _Toc344195440 第三節(jié)數(shù)據(jù)訪問(wèn)層的實(shí)現(xiàn) PAGEREF _Toc344195440

13、h 19 HYPERLINK l _Toc344195441 第五章系統(tǒng)測(cè)試 PAGEREF _Toc344195441 h 20 HYPERLINK l _Toc344195442 第一節(jié)系統(tǒng)測(cè)試的必要性 PAGEREF _Toc344195442 h 20 HYPERLINK l _Toc344195443 一、單元測(cè)試 PAGEREF _Toc344195443 h 20 HYPERLINK l _Toc344195444 二、集成測(cè)試 PAGEREF _Toc344195444 h 21 HYPERLINK l _Toc344195445 三、驗(yàn)收測(cè)試 PAGEREF _Toc3441

14、95445 h 21 HYPERLINK l _Toc344195446 第二節(jié)采集數(shù)據(jù)模塊的測(cè)試 PAGEREF _Toc344195446 h 21 HYPERLINK l _Toc344195447 第三節(jié)搜索引擎的測(cè)試 PAGEREF _Toc344195447 h 22 HYPERLINK l _Toc344195448 結(jié)束語(yǔ) PAGEREF _Toc344195448 h 24 HYPERLINK l _Toc344195449 致謝 PAGEREF _Toc344195449 h 25 HYPERLINK l _Toc344195450 參考文獻(xiàn) PAGEREF _Toc344

15、195450 h 26 緒論課題研究的目的和意義搜索引擎,通常指的是收集了互聯(lián)網(wǎng)上幾千萬(wàn)到幾十億個(gè)網(wǎng)頁(yè)并對(duì)網(wǎng)頁(yè)中的每一個(gè)文字(即關(guān)鍵詞)進(jìn)行索引,建立索引數(shù)據(jù)庫(kù)的全文搜索引擎。當(dāng)用戶查找某個(gè)關(guān)鍵詞的時(shí)候,所有在頁(yè)面內(nèi)容中包含了該關(guān)鍵詞的網(wǎng)頁(yè)都將作為搜索結(jié)果被搜出來(lái)。在經(jīng)過(guò)復(fù)雜的算法進(jìn)行排序后,這些結(jié)果將按照與搜索關(guān)鍵詞的相關(guān)度高低,依次排列。隨著信息化的發(fā)展,越來(lái)越多的人通過(guò)搜索引擎來(lái)尋找自己所需要的東西,用戶在搜索引擎中輸入某一關(guān)鍵詞的時(shí)候,會(huì)有成千上萬(wàn)甚至百萬(wàn)千萬(wàn)上億的結(jié)果,那么在茫茫的信息海洋中我們?nèi)绾尾拍茏層脩粽业轿覀兙W(wǎng)站上相關(guān)的內(nèi)容呢?互聯(lián)網(wǎng)的信息如浩瀚的海洋一樣,如何在這個(gè)無(wú)邊無(wú)際

16、的海洋找出對(duì)用戶最有用的信息就是搜索引擎的主要作用。搜索引擎,往往是大多數(shù)用戶進(jìn)入互聯(lián)網(wǎng)的入口。搜索引擎的出現(xiàn),整合了眾多網(wǎng)站信息,恰恰起到了信息導(dǎo)航的作用。通用搜索引擎就如同互聯(lián)網(wǎng)第一次出現(xiàn)的門(mén)戶網(wǎng)站一樣,大量的信息整合導(dǎo)航,極快的查詢,將所有網(wǎng)站上的信息整理在一個(gè)平臺(tái)上供網(wǎng)民使用,于是信息的價(jià)值第一次普遍的被眾多商家認(rèn)可,迅速成為互聯(lián)網(wǎng)中最有價(jià)值的領(lǐng)域。搜索引擎的便捷使其成為互聯(lián)網(wǎng)最受歡迎的應(yīng)用之一。以至于有相當(dāng)多的人將瀏覽器的默認(rèn)首頁(yè)設(shè)為搜索引擎,甚至形成了將網(wǎng)站名稱(chēng)輸入到搜索框中而非瀏覽器地址欄這樣獨(dú)特的網(wǎng)絡(luò)導(dǎo)航習(xí)慣??偟膩?lái)說(shuō),搜索引擎直接改變了人們的網(wǎng)絡(luò)習(xí)慣,人們進(jìn)入網(wǎng)絡(luò)第一個(gè)想到的

17、就是搜索引擎。網(wǎng)絡(luò)化就是信息化,在網(wǎng)絡(luò)化的今天、信息爆炸式增長(zhǎng)的今天。研究搜索引擎具有重要而深遠(yuǎn)的意義。搜索引擎的現(xiàn)狀與前景搜索引擎的現(xiàn)狀: 自1990年,加拿大麥吉爾大學(xué)(University of McGill)計(jì)算機(jī)學(xué)院的師生開(kāi)發(fā)出Archie,成為意義上的第一個(gè)搜索引擎開(kāi)始,搜索引擎發(fā)展迅速,越來(lái)越貼近人們的需求。目前主流的搜索引擎主要有:Google搜索、百度搜索、搜狗搜索。Google搜索擁有的數(shù)據(jù)庫(kù)是幾大搜索引擎中最大的。因此,Google的搜索結(jié)果往往比別的引擎更多。它盡量把與關(guān)鍵詞有關(guān)的頁(yè)面都呈現(xiàn)給搜索者,廣泛,但缺乏精度。由于Google的數(shù)據(jù)庫(kù)有很多來(lái)自blog網(wǎng)站,同時(shí)

18、也有很多blogger搜索Google,因此Google很重視對(duì)blog網(wǎng)站資料的索引,搜索結(jié)果中往往含有比其它網(wǎng)站更多的blog信息。百度搜索一直以開(kāi)發(fā)最符合中國(guó)人使用習(xí)慣的搜索引擎為己任,經(jīng)過(guò)不斷的努力和堅(jiān)持不懈,百度搜索引擎已成為中國(guó)最強(qiáng)大的中文搜索引擎。采用的核心技術(shù):超鏈分析超鏈分析技術(shù),是新一代搜索引擎的關(guān)鍵技術(shù),現(xiàn)在已為世界各大搜索引擎普遍采用,百度總裁李彥宏就是超鏈分析專(zhuān)利的唯一持有人。在學(xué)術(shù)界,一篇論文被引用得越多就說(shuō)明其越好,學(xué)術(shù)價(jià)值就越高。超鏈分析就是通過(guò)分析鏈接網(wǎng)站的多少來(lái)評(píng)價(jià)被鏈接的網(wǎng)站質(zhì)量,這保證了用戶在百度搜索時(shí),越受用戶歡迎的內(nèi)容排名越靠前。搜狗搜索是由國(guó)內(nèi)著名

19、的門(mén)戶網(wǎng)站搜狐SOHU.COM運(yùn)作的,搜狐是國(guó)內(nèi)最早提供搜索服務(wù)的站點(diǎn)?;ヂ?lián)網(wǎng)概念在國(guó)內(nèi)的普及,搜狐功不可沒(méi)。在2001年年初由CNAZ(中文網(wǎng)站評(píng)估認(rèn)證網(wǎng))舉辦的搜索引擎網(wǎng)絡(luò)專(zhuān)項(xiàng)功能排名調(diào)查中,搜狐名列第一。搜索引擎的前景:搜索引擎是人們使用最多的網(wǎng)絡(luò)工具,人們使用的越多的同時(shí)對(duì)它的要求就越高,現(xiàn)在的搜索引擎已經(jīng)不能滿足人們搜索的需要了。據(jù)國(guó)際數(shù)據(jù)公司(IDC)曾公布的一份報(bào)告表明,被大肆宣傳為“使用簡(jiǎn)便易用,搜索結(jié)果豐富”的搜索引擎技術(shù)正在被信息更集中的局域網(wǎng)取代,因?yàn)榇蠖鄶?shù)搜索系統(tǒng)的表現(xiàn)與用戶的期望值相差太大,諸如數(shù)據(jù)量高速增長(zhǎng)的視頻、音頻等多媒體信息的檢索,現(xiàn)在仍然是無(wú)法突破的難題。對(duì)

20、多媒體內(nèi)容的處理尚不成熟,有的搜索引擎不支持動(dòng)態(tài)網(wǎng)頁(yè)。人們期望引擎不僅能挑出自己需要的文章,還能挑出自己所關(guān)心的圖片、視頻、音樂(lè)等。如何解決這些難題已成為第三代搜索引擎探索的方向。一個(gè)好的搜索引擎不再僅憑借數(shù)據(jù)庫(kù)大小、更新頻率、檢索速度、對(duì)多語(yǔ)言的支持這幾個(gè)基本特性來(lái)衡量,隨著數(shù)據(jù)庫(kù)容量的不斷膨脹,如何從龐大的資料庫(kù)中精確地找到正確的資料,被公認(rèn)為是下一代搜索技術(shù)的競(jìng)爭(zhēng)要點(diǎn)。需求分析開(kāi)發(fā)背景而隨著新聞技術(shù)的飛速發(fā)展,特別是因特網(wǎng)應(yīng)用的迅速普及,網(wǎng)站越來(lái)越多,并且每天全球互聯(lián)網(wǎng)網(wǎng)頁(yè)數(shù)目以千萬(wàn)級(jí)的數(shù)量增加。要在浩瀚的網(wǎng)絡(luò)新聞中尋找所需要的材料無(wú)異于大海撈針。網(wǎng)頁(yè)是因特網(wǎng)的最重要組成部分,也是人們獲

21、取網(wǎng)絡(luò)信息的最主要來(lái)源,為了方便人們?cè)诖罅糠彪s的網(wǎng)頁(yè)中尋找出自己需要的信息,搜索引擎就應(yīng)運(yùn)而生了。搜索引擎是人們網(wǎng)上購(gòu)物、看電影、看小說(shuō)、看圖片等網(wǎng)絡(luò)使用中的第一個(gè)首選入口。其重要性不言而喻?;ヂ?lián)網(wǎng)的海量信息,讓人眼花繚亂,如果在短時(shí)間內(nèi)沒(méi)有找到用戶想要的信息,不僅影響用戶的心情,而且影響用戶的工作效率。所以搜索引擎最核心也是最重要的是對(duì)關(guān)鍵字的匹配程度。匹配程度越高得到的結(jié)果越貼近用戶的需求,也越得到用戶的青睞。目前的搜索引擎可分為三類(lèi):一是全文搜索引擎,它是從互聯(lián)網(wǎng)提取各個(gè)網(wǎng)站的信息(以網(wǎng)頁(yè)文字為主),建立起數(shù)據(jù)庫(kù),并能檢索與用戶查詢條件相匹配的記錄,按一定的排列順序返回結(jié)果。二是目錄索引

22、,它是按目錄分類(lèi)的網(wǎng)站鏈接列表而已,用戶完全可以按照分類(lèi)目錄找到所需要的信息,不依靠關(guān)鍵詞進(jìn)行查詢。三是元搜索引擎,他先是接受用戶查詢請(qǐng)求后,同時(shí)在多個(gè)搜索引擎上搜索,并將結(jié)果返回給用戶。系統(tǒng)功能功能劃分主要功能包括:數(shù)據(jù)采集、數(shù)據(jù)保存、數(shù)據(jù)排序、搜索引擎、前臺(tái)顯示。功能描述數(shù)據(jù)采集對(duì)指定鏈接的網(wǎng)頁(yè)中的所有的超連接進(jìn)行采集,然后對(duì)沒(méi)一條超鏈接進(jìn)行進(jìn)一步的解析,按一定的規(guī)則把超鏈接的網(wǎng)頁(yè)的內(nèi)容采集出來(lái)。數(shù)據(jù)保存把采集到的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)。數(shù)據(jù)的主要內(nèi)容包括:網(wǎng)頁(yè)標(biāo)題、作者、內(nèi)容、發(fā)表時(shí)間、鏈接地址。數(shù)據(jù)排序?qū)Ψ纤阉鳁l件的數(shù)據(jù)進(jìn)行排序,排序規(guī)則是關(guān)鍵字的匹配和網(wǎng)頁(yè)的發(fā)表時(shí)間。搜索引擎首先響應(yīng)用戶

23、的HTTP請(qǐng)求,獲取搜索關(guān)鍵字;然后查詢數(shù)據(jù)庫(kù)里面匹配關(guān)鍵字的數(shù)據(jù),把符合條件的數(shù)據(jù)提取出來(lái),存到一個(gè)臨時(shí)表中;最后查詢臨時(shí)表的數(shù)據(jù)并排序,返回?cái)?shù)據(jù)。前臺(tái)顯示獲取從服務(wù)器返回的數(shù)據(jù),按照一定的規(guī)則顯示在最后的顯示頁(yè)面。相關(guān)技術(shù)及工具簡(jiǎn)介HTML語(yǔ)言簡(jiǎn)介HTML(Hyper Text Markup Language 超文本標(biāo)記語(yǔ)言)是一種用來(lái)制作超文本文檔的簡(jiǎn)單標(biāo)記語(yǔ)言。用HTML編寫(xiě)的超文本文檔稱(chēng)為HTML文檔,它能獨(dú)立于各種操作系統(tǒng)平臺(tái)(如UNIX,WINDOWS等)。自1990年以來(lái)HTML就一直被用作World Wide Web上的信息表示語(yǔ)言,用于描述Homepage的格式設(shè)計(jì)和它與W

24、WW上其它Homepage的連結(jié)信息。HTML文檔(即Homepage的源文件)是一個(gè)放置了標(biāo)記的ASCII文本文件,通常它帶有.html或.htm的文件擴(kuò)展名。生成一個(gè)HTML文檔主要有以下三種途徑:手工直接編寫(xiě)手工直接編寫(xiě)(例如用你所喜愛(ài)的ASCII文本編輯器或其它HTML的編輯工具)。格式轉(zhuǎn)換通過(guò)某些格式轉(zhuǎn)換工具將現(xiàn)有的其它格式文檔(如WORD文檔)轉(zhuǎn)換成HTML文檔。服務(wù)器生成由Web服務(wù)器(或稱(chēng)HTTP 服務(wù)器)一方實(shí)時(shí)動(dòng)態(tài)地生成。HTML語(yǔ)言是通過(guò)利用各種標(biāo)記(tags)來(lái)標(biāo)識(shí)文檔的結(jié)構(gòu)以及標(biāo)識(shí)超鏈(Hyperlink)的信息。雖然HTML語(yǔ)言描述了文檔的結(jié)構(gòu)格式,但并不能精確地定

25、義文檔信息必須如何顯示和排列,而只是建議Web瀏覽器(如Mosiac,Netscape等)應(yīng)該如何顯示和排列這些信息,最終在用戶面前的顯示結(jié)果取決于Web瀏覽器本身的顯示風(fēng)格及其對(duì)標(biāo)記的解釋能力。這就是為什么同一文檔在不同的瀏覽器中展示的效果會(huì)不一樣。JavaScript語(yǔ)言簡(jiǎn)介JavaScript 是一種新的描述語(yǔ)言,它是介于HTML和Java高級(jí)語(yǔ)言之間的一種語(yǔ)言,它更接近于高級(jí)語(yǔ)言,但易學(xué),功能稍弱。此語(yǔ)言可以被嵌入 HTML 的文件之中,它是一種通用的、基于原型的、面向?qū)ο蟮哪_本語(yǔ)言。它不占用很多系統(tǒng)和網(wǎng)絡(luò)資源的情況下提供一種可以插入到不同的應(yīng)用程序的通用代碼。透過(guò)JavaScript

26、可以做到回應(yīng)使用者的需求事件 (如: form 的輸入) 而不用任何的網(wǎng)路來(lái)回傳輸資料,所以當(dāng)一位使用者輸入一項(xiàng)資料時(shí),它不用經(jīng)過(guò)傳給服務(wù)器端 (server) 處理,再傳回來(lái)的過(guò)程,而直接可以被客戶端 (client) 的應(yīng)用程式所處理。其中JavaScript與Java的區(qū)別在于: (1) JavaScript是解釋性的語(yǔ)言,當(dāng)程序執(zhí)行的時(shí)候,瀏覽器一邊解釋一邊執(zhí)行。而Java是一種編譯型的語(yǔ)言,必須通過(guò)JDK的編譯,在Java虛擬機(jī)上運(yùn)行。(2) 代碼格式不一樣,Java的代碼經(jīng)過(guò)JDK編譯后成為二進(jìn)制的以.class作為擴(kuò)展名的文件,而JavaScript是純文本的文件。(3) 在HT

27、ML中嵌入的方式不一樣。Java可以通過(guò)Applet嵌入HTML中,而JavaScript是直接寫(xiě)入其中。JSP簡(jiǎn)介JSP(JavaServer Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記(tag),就構(gòu)成了JSP網(wǎng)頁(yè)(*.jsp)。Web服務(wù)器在遇到訪問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式返回給客戶。程序片段可以操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)以及發(fā)送 email 等等,這就是建立動(dòng)態(tài)網(wǎng)站所需要的功

28、能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,對(duì)客戶瀏覽器的要求最低,可以實(shí)現(xiàn)無(wú)Plugin,無(wú)ActiveX,無(wú)Java Applet,甚至無(wú)Frame。Web開(kāi)發(fā)輕平臺(tái)Tomcat簡(jiǎn)介T(mén)omcat是一個(gè)免費(fèi)的開(kāi)源的Serlvet容器,它是Apache基金會(huì)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache,Sun和其它一些公司及個(gè)人共同開(kāi)發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規(guī)范總能在Tomcat中得到體現(xiàn)。與傳統(tǒng)的桌面應(yīng)用程序不同,Tomcat中的應(yīng)用程序是一個(gè)WAR(Web Archive)文件。WAR是Sun提出的一種Web應(yīng)用程序

29、格式,與JAR類(lèi)似,也是許多文件的一個(gè)壓縮包。這個(gè)包中的文件按一定目錄結(jié)構(gòu)來(lái)組織:通常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會(huì)有一個(gè)WEB-INF目錄,這個(gè)目錄很重要。通常在WEB-INF目錄下有一個(gè)web.xml文件和一個(gè)classes目錄,web.xml是這個(gè)應(yīng)用的配置文件,而classes目錄下則包含編譯好的Servlet類(lèi)和Jsp或Servlet所依賴的其它類(lèi)(如JavaBean)。通常這些所依賴的類(lèi)也可以打包成JAR放到WEB-INF下的lib目錄下,當(dāng)然也可以放到系統(tǒng)的CLASSPATH中,但那樣移植和管理起來(lái)不方便。 在Tomcat中,應(yīng)用程序的部署

30、很簡(jiǎn)單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會(huì)自動(dòng)檢測(cè)到這個(gè)文件,并將其解壓。你在瀏覽器中訪問(wèn)這個(gè)應(yīng)用的Jsp時(shí),通常第一次會(huì)很慢,因?yàn)門(mén)omcat要將Jsp轉(zhuǎn)化為Servlet文件,然后編譯。編譯以后,訪問(wèn)將會(huì)很快。另外Tomcat也提供了一個(gè)應(yīng)用:manager,訪問(wèn)這個(gè)應(yīng)用需要用戶名和密碼,用戶名和密碼存儲(chǔ)在一個(gè)xml文件中。通過(guò)這個(gè)應(yīng)用,輔助于Ftp,你可以在遠(yuǎn)程通過(guò)Web部署和撤銷(xiāo)應(yīng)用。當(dāng)然本地也可以。MYSQL數(shù)據(jù)庫(kù)簡(jiǎn)介MySql是一個(gè)快速、多線程、多用戶的SQL數(shù)據(jù)庫(kù)服務(wù)器,具有功能強(qiáng),使用簡(jiǎn)單,管理方便,運(yùn)行速度快,可靠性高,安全保密等特點(diǎn)。其出

31、現(xiàn)雖然只有短短的數(shù)年時(shí)間,但憑借著“開(kāi)放源代碼”的東風(fēng),它從眾多的數(shù)據(jù)庫(kù)中脫穎而出,成為PHP的首選數(shù)據(jù)庫(kù)。除了因?yàn)閹缀跏敲赓M(fèi)的這點(diǎn)之外,支持正規(guī)的SQL查詢語(yǔ)言和采用多種數(shù)據(jù)類(lèi)型,能對(duì)數(shù)據(jù)進(jìn)行各種詳細(xì)的查詢等都是PHP選擇MySql的主要原因。以下是MySql數(shù)據(jù)庫(kù)的主要特征。 (1) MySQL的核心程序采用完全的多線程編程。線程是輕量級(jí)的進(jìn)程,它可以靈活地為用戶提供服務(wù),而不過(guò)多的系統(tǒng)資源。用多線程和C語(yǔ)言實(shí)現(xiàn)的MySQL能很容易充分利用CPU。 (2) MySQL可運(yùn)行在不同的操作系統(tǒng)下。簡(jiǎn)單地說(shuō),MySQL可以支持Windows95/98/NT/2000以及UNIX、Linux和SU

32、N OS等多種操作系統(tǒng)平臺(tái)。這意味著在一個(gè)操作系統(tǒng)中實(shí)現(xiàn)的應(yīng)用可以很方便地移植到其他的操作系統(tǒng)下。 (3) MySQL有一個(gè)非常靈活而且安全的權(quán)限和口令系統(tǒng)。當(dāng)客戶與MySQL服務(wù)器連接時(shí),他們之間所有的口令傳送被加密,而且MySQL支持主機(jī)認(rèn)證。 (4) MySQL支持ODBC for Windows。MySQL支持所有的ODBC 2.5函數(shù)和其他許多函數(shù),這樣就可以用Access連接MySQL服務(wù)器,從而使得MySQL的應(yīng)用被大大擴(kuò)展。 (5) MySQL支持大型的數(shù)據(jù)庫(kù)。雖然對(duì)于用PHP編寫(xiě)的網(wǎng)頁(yè)來(lái)說(shuō)只要能夠存放上百條以上的記錄數(shù)據(jù)就足夠了,但MySQL可以方便地支持上千萬(wàn)條記錄的數(shù)據(jù)庫(kù)

33、。作為一個(gè)開(kāi)放源代碼的數(shù)據(jù)庫(kù),MySQL可以針對(duì)不同的應(yīng)用進(jìn)行相應(yīng)的修改。 (6) MySQL擁有一個(gè)非??焖俣曳€(wěn)定的基于線程的內(nèi)存分配系統(tǒng),可以持續(xù)使用面不必?fù)?dān)心其穩(wěn)定性。事實(shí)上,MySQL的穩(wěn)定性足以應(yīng)付一個(gè)超大規(guī)模的數(shù)據(jù)庫(kù)。 (7) 強(qiáng)大的查詢功能。MySQL支持查詢的SELECT和WHERE語(yǔ)句的全部運(yùn)算符和函數(shù),并且可以在同一查詢中混用來(lái)自不同數(shù)據(jù)庫(kù)的表,從而使得查詢變得快捷和方便。 如今,包括Siemens和Silicon Graphics這樣的國(guó)際知名公司也開(kāi)始把MySQL作為其數(shù)據(jù)庫(kù)管理系統(tǒng),這就更加證明了MySQL數(shù)據(jù)庫(kù)的優(yōu)越性能和廣闊的市場(chǎng)發(fā)展前景。系統(tǒng)設(shè)計(jì)系統(tǒng)整體架構(gòu)該

34、系統(tǒng)所采用的B/S 模式在邏輯體系結(jié)構(gòu)上可以分為用戶表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)服務(wù)層3 層體系統(tǒng)結(jié)構(gòu).B/S 模式有著C/S 模式不可比擬的優(yōu)勢(shì),如:簡(jiǎn)化了客戶端,不論基于何種平臺(tái),只須安裝一種通用的瀏覽器,采用同樣的界面訪問(wèn);能夠跨越異質(zhì)異構(gòu)網(wǎng)絡(luò);穩(wěn)定性高;特別適用于網(wǎng)上信息發(fā)布;服務(wù)器端升級(jí)維護(hù)集中、方便,服務(wù)器端可以任意擴(kuò)充,而對(duì)客戶端不產(chǎn)生任何影響等.圖3.1.1為B/S 模式體系結(jié)構(gòu)圖.圖3.1.1系統(tǒng)模塊設(shè)計(jì)按照系統(tǒng)分析的結(jié)果,搜索引擎系統(tǒng)設(shè)計(jì)的主要是實(shí)現(xiàn)數(shù)據(jù)采集、數(shù)據(jù)保存、數(shù)據(jù)排序、搜索引擎、前臺(tái)顯示。根據(jù)整體的需求,這個(gè)系統(tǒng)也可以分為兩個(gè)大的分類(lèi),即采集數(shù)據(jù)和顯示數(shù)據(jù)。所以搜索系

35、統(tǒng)主要可以分成兩個(gè)模塊:數(shù)據(jù)采集模塊和搜索引擎模塊。數(shù)據(jù)采集模塊數(shù)據(jù)采集模塊的功能又稱(chēng)“網(wǎng)絡(luò)蜘蛛”。 顧名思義,網(wǎng)絡(luò)蜘蛛就是在網(wǎng)絡(luò)上爬行的程序,用他來(lái)抓取web服務(wù)器上的web文檔,它可以在掃描web頁(yè)面的同時(shí)檢索其內(nèi)的超鏈接并加入掃描隊(duì)列等待以后掃描。掃描隊(duì)列主要掃描URL鏈接和URL鏈接下的網(wǎng)頁(yè)內(nèi)容,包括:網(wǎng)頁(yè)標(biāo)題、作者、內(nèi)容、發(fā)表時(shí)間、鏈接地址。獲取到的數(shù)據(jù),逐一保存到數(shù)據(jù)庫(kù)中去。具體實(shí)現(xiàn)邏輯如圖。圖3.2.1搜索引擎模塊搜索引擎模塊主要完成用戶對(duì)數(shù)據(jù)的搜索功能。用戶使用瀏覽器,輸入搜索的關(guān)鍵字,點(diǎn)擊提交。服務(wù)器收到用戶發(fā)出的搜索請(qǐng)求,獲取請(qǐng)求中的搜索關(guān)鍵字,然后到數(shù)據(jù)庫(kù)中搜索匹配關(guān)鍵字

36、的數(shù)據(jù)。取出匹配的數(shù)據(jù)之后按一定的規(guī)則排序,最后返回展示到用戶界面。整個(gè)模塊采用的是MVC三層設(shè)計(jì)模式,M層(即Modle層)代表實(shí)體數(shù)據(jù)模塊,V層(即View層)代表數(shù)據(jù)展示模塊,C層(即Control層)代表邏輯控制模塊。具體設(shè)計(jì)邏輯如圖。圖3.2.2數(shù)據(jù)庫(kù)設(shè)計(jì)根據(jù)系統(tǒng)要求與模塊設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì)主要分成兩個(gè)表:數(shù)據(jù)表和排序臨時(shí)表。數(shù)據(jù)表的主要作用是存儲(chǔ)“數(shù)據(jù)采集器”采集下來(lái)的數(shù)據(jù),排序臨時(shí)表是根據(jù)搜索關(guān)鍵字取出來(lái)排序的數(shù)據(jù)。數(shù)據(jù)表包括的字段有:編號(hào)、標(biāo)題、作者、內(nèi)容、發(fā)表時(shí)間、鏈接地址。字段名是否主鍵字段類(lèi)型字段長(zhǎng)度是否為允許為空備注id是bigint32否編號(hào)newstitle否varc

37、har100是標(biāo)題newsauthor否varchar100是作者newscontent否text65535是內(nèi)容newsurl否varchar300是鏈接地址newsdate否varchar100是日期表3.3.1排序臨時(shí)表包括的字段有:編號(hào)、標(biāo)題、作者、內(nèi)容、發(fā)表時(shí)間、鏈接地址。字段名是否主鍵字段類(lèi)型字段長(zhǎng)度是否為允許為空備注id是bigint32否編號(hào)newstitle否varchar100是標(biāo)題newsauthor否varchar100是作者newscontent否text65535是內(nèi)容newsurl否varchar300是鏈接地址newsdate否varchar100是日期news

38、date_int否varchar100是日期數(shù)值表3.3.2系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)采集數(shù)據(jù)采集的實(shí)現(xiàn)主要是用了java swing技術(shù)。在操作界面中有url輸入框、設(shè)置抓取周期輸入框。url指的是采集目標(biāo)的網(wǎng)址。抓取周期是隔一定的時(shí)間抓取一次。當(dāng)點(diǎn)擊開(kāi)始按鈕時(shí),系統(tǒng)會(huì)檢查輸入url的合法性,如果url合法,則檢查抓取周期是否輸入。檢查都通過(guò)后,系統(tǒng)啟動(dòng)線程抓取數(shù)據(jù)。實(shí)現(xiàn)效果如圖。圖4.1.1解析數(shù)據(jù)的實(shí)現(xiàn)解析數(shù)據(jù)的實(shí)現(xiàn)主要用到了開(kāi)源jar包htmlparser.jar,htmlparser.jar可以實(shí)現(xiàn)對(duì)幾乎全部網(wǎng)頁(yè)的解析。里面包含有多種解析方法。本系統(tǒng)中主要用到了標(biāo)題解析、內(nèi)容解析、作者解析、日期解

39、析。標(biāo)題解析的實(shí)現(xiàn)代碼如下:NodeFilter titleFilter = new TagNameFilter(title);private String getTitle(NodeFilter titleFilter, Parser parser) String titleName = ; try NodeList titleNodeList = (NodeList) parser.parse(titleFilter); if(titleNodeList.size() 0) Node node_title = titleNodeList.elementAt(0);/取節(jié)點(diǎn) if(node_

40、title != null) titleName = node_title.toPlainTextString(); catch (ParserException ex) ex.printStackTrace(); return titleName; 內(nèi)容解析的實(shí)現(xiàn)代碼如下:NodeFilter contentFilter1 = new AndFilter(new TagNameFilter(div), new HasAttributeFilter(id, Cnt-Main-Article-QQ);NodeFilter contentFilter2 = new AndFilter(new Ta

41、gNameFilter(div), new HasAttributeFilter(class, explain);NodeFilter contentFilter = new OrFilter(contentFilter1,contentFilter2);private String getNewsContent(NodeFilter newsContentFilter, Parser parser) String content = null; StringBuilder builder = new StringBuilder(); try NodeList newsContentList

42、= (NodeList) parser.parse(newsContentFilter); for (int i = 0; i newsContentList.size(); i+) Div newsContenTag = (Div) newsContentList.elementAt(i); builder = builder.append(newsContenTag.getStringText(); content = builder.toString(); if (content != null) parser.reset(); parser = Parser.createParser(

43、content, gb2312); StringBean sb = new StringBean(); sb.setCollapse(true); parser.visitAllNodesWith(sb); content = sb.getStrings(); if ( content != null ) content = content.replaceAll(.*a-z.*, ); content = content.replace(我來(lái)說(shuō)兩句, ); else System.out.println(沒(méi)有得到新聞內(nèi)容!); catch (ParserException ex) ex.pri

44、ntStackTrace(); return content; 作者解析的實(shí)現(xiàn)代碼如下:NodeFilter newsauthorFilter1 = new AndFilter(new TagNameFilter(div), new HasAttributeFilter(class, ll);NodeFilter newsauthorFilter2 = new AndFilter(new TagNameFilter(span), new HasAttributeFilter(class, color-a-3);NodeFilter newsauthorFilter = new AndFilte

45、r(newsauthorFilter2, new HasParentFilter(newsauthorFilter1);private String getNewsAuthor(NodeFilter newsauthorFilter, Parser parser) String newsAuthor = ; try /依據(jù)newsauthorFilter的法則對(duì)網(wǎng)頁(yè)進(jìn)行過(guò)濾 NodeList authorList = (NodeList) parser.parse(newsauthorFilter); /獲取責(zé)任編輯字符串 for (int i = 0; i authorList.size()

46、; i+) Span authorSpan = (Span) authorList.elementAt(i); newsAuthor = authorSpan.getStringText(); catch (ParserException ex) ex.printStackTrace(); return newsAuthor; 日期解析的實(shí)現(xiàn)代碼如下:NodeFilter newsdateFilter1 = new AndFilter(new TagNameFilter(div), new HasAttributeFilter(class, ll);NodeFilter newsdateFil

47、ter2 = new AndFilter(new TagNameFilter(span), new HasAttributeFilter(class, article-time);NodeFilter newsdateFilter = new AndFilter(newsdateFilter2, new HasParentFilter(newsdateFilter1);private String getNewsDate(NodeFilter dateFilter, Parser parser) String newsDate = ; try NodeList dateList = (Node

48、List) parser.parse(dateFilter); for (int i = 0; i dateList.size(); i+) Span dateTag = (Span)dateList.elementAt(i); newsDate = dateTag.getStringText(); catch (ParserException ex) ex.printStackTrace(); return newsDate; 搜索引擎的實(shí)現(xiàn)搜索引擎的實(shí)現(xiàn)是整個(gè)系統(tǒng)的核心部分,其主要要解決的問(wèn)題是提取出匹配搜索關(guān)鍵字的數(shù)據(jù),并進(jìn)行排序。關(guān)鍵字的匹配方式是:先用關(guān)鍵字和數(shù)據(jù)庫(kù)中的newstit

49、le字段進(jìn)行匹配,然后再匹配newscontent字段。排列的方式是:先把時(shí)間轉(zhuǎn)換成數(shù)字形式,然后用SQL語(yǔ)句中的從大到小排序。圖4.2.1實(shí)現(xiàn)查詢數(shù)據(jù)的關(guān)鍵代碼如下:public List getNews(int start, int end, String keyWord)DB db = new DB();List list = new ArrayList();ResultSet result = null;try String getSql = select * from sortedNews order by newsdate_int DESC limit + start + , +

50、end;System.out.println(getSql);result = db.executeQuery(getSql);if(null != result)while(result.next()String title = result.getString(newstitle);String author = result.getString(newsauthor);String content = result.getString(newscontent);String url = result.getString(newsurl);String date = result.getS

51、tring(newsdate);String mTitle = title.replace(keyWord, + keyWord+ );String mContent = getTagContent(content, keyWord);if(.equals(author) | null = author | null.equals(author)author = 不詳;if(.equals(date) | null = date | null.equals(date)date = 不詳;System.out.println(content:+mContent);System.out.print

52、ln(titile:+title);NewsBean bean = new NewsBean();bean.setNewsTitle(mTitle);bean.setNewsAuthor(author);bean.setNewsContent(mContent);bean.setNewsURL(url);bean.setNewsDate(date);list.add(bean);result.close(); catch (Exception e1) e1.printStackTrace();finallyif(db != null) db.all_close();if(result != n

53、ull)try result.close(); catch (SQLException e) e.printStackTrace();return list;數(shù)據(jù)訪問(wèn)層的實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層是與數(shù)據(jù)庫(kù)交互的層面.主要的作用是對(duì)數(shù)據(jù)的持久化操作,增強(qiáng)系統(tǒng)的可移植性,隱藏?cái)?shù)據(jù)訪問(wèn)細(xì)節(jié).在系統(tǒng)實(shí)現(xiàn)過(guò)程中,核心業(yè)務(wù)主要通過(guò)Web Service層來(lái)實(shí)現(xiàn),Web層將用戶請(qǐng)求發(fā)給Web Service層,WebService層進(jìn)行業(yè)務(wù)處理,并通過(guò)數(shù)據(jù)訪問(wèn)層與后臺(tái)數(shù)據(jù)庫(kù)相交換,將數(shù)據(jù)結(jié)果發(fā)給Web層。數(shù)據(jù)訪問(wèn)層實(shí)現(xiàn)的主要方法是JDBC技術(shù)。數(shù)據(jù)庫(kù)是用MySQL數(shù)據(jù)庫(kù)作為容器。實(shí)現(xiàn)原理如圖。連接數(shù)據(jù)庫(kù)代碼如下:pu

54、blic static ConnectionPool GetPoolInstance()if(poolInstance = null) poolInstance = new ConnectionPool(com.mysql.jdbc.Driver,jdbc:mysql:/localhost:3306/news_db,root, root);try poolInstance.createPool(); catch (Exception e) e.printStackTrace();return poolInstance;執(zhí)行查詢數(shù)據(jù)操作代碼如下:public ResultSet executeQ

55、uery(String sql) throws Exception try /* * Class.forName(xool.ProxoolDriver); con = * DriverManager.getConnection(proxool.xml-test); */conn = connPool.getConnection();stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs = stmt.executeQuery(sql); catch (SQLExcept

56、ion e) throw e;/ catch(NamingException e)throw e;return rs;執(zhí)行更新數(shù)據(jù)庫(kù)操作代碼如下:public int executeUpdate(String sql) throws Exception / stmt = null;/ rs=null;int result = 0;try conn = connPool.getConnection();stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);result = stmt.executeUpdate(sql); catch (SQLException ex) System.err.println(執(zhí)行SQL語(yǔ)句出錯(cuò): + ex.getMessage();return result;系統(tǒng)測(cè)試系統(tǒng)測(cè)試的必要性隨著信息技術(shù)的飛速發(fā)展,軟件產(chǎn)品已深入到社會(huì)生活的各個(gè)領(lǐng)域,軟件產(chǎn)品的質(zhì)量自然成為人們關(guān)注的焦點(diǎn)。作為商品的產(chǎn)品,都需要經(jīng)過(guò)嚴(yán)格的質(zhì)量測(cè)試,軟件產(chǎn)品也不能例外。軟件測(cè)試是發(fā)現(xiàn)軟件中錯(cuò)誤和缺陷的重要手段,并且實(shí)踐證明,軟件中存在缺陷所造

溫馨提示

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

評(píng)論

0/150

提交評(píng)論