下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 搜索引擎的設計與實現(xiàn)摘要隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡上的數(shù)據(jù)也隨著爆炸式地增長。如何最快速篩選出對我們有用的信息成了主要問題。搜索引擎是指根據(jù)一定的策略、運用特定的計算機程序從互聯(lián)網(wǎng)上搜集信息,在對信息進行組織和處理后,為用戶提供檢索服務,將用戶檢索相關的信息展示給用戶的系統(tǒng)。搜索引擎已經(jīng)成為互聯(lián)網(wǎng)不可缺少的工具,可以幫助人們更快的找到所要的內(nèi)容和信息。提高做事的效率,使互聯(lián)網(wǎng)資源高效的利用。本文主要介紹了搜索引擎是從指定的Web頁面中按照超鏈接進行采集、解析,并把解析出來的每條數(shù)據(jù)后加入數(shù)據(jù)庫。用戶可以通過客戶端發(fā)送搜索請求,Web服務端對數(shù)據(jù)進行篩選、排序,最后展示到客戶端。對信息的采集主
2、要采用了HTML解析技術、通過迭代解析的方式不斷采集數(shù)據(jù)。搜索引擎的整體構架了采用了MVC設計模型,采用了JSP技術和Struts2技術,用關鍵詞匹配算法篩選結果,搜索結果匹配度良好。初步完成了搜索引擎的主要功能。關鍵詞:搜索,數(shù)據(jù)庫,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é)開發(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é)相關技術及工具簡介 PAGEREF _Toc344195424 h 7 HYPERLINK l _Toc344195425 一、HTML語言簡介 PAGEREF _Toc344195425 h 7 HYPERLINK l _Toc344195426 二、JavaScript語言簡介 PA
10、GEREF _Toc344195426 h 7 HYPERLINK l _Toc344195427 三、JSP簡介 PAGEREF _Toc344195427 h 8 HYPERLINK l _Toc344195428 四、Web開發(fā)輕平臺Tomcat簡介 PAGEREF _Toc344195428 h 8 HYPERLINK l _Toc344195429 五、MYSQL數(shù)據(jù)庫簡介 PAGEREF _Toc344195429 h 8 HYPERLINK l _Toc344195430 第三章系統(tǒng)設計 PAGEREF _Toc344195430 h 9 HYPERLINK l _Toc3441
11、95431 第一節(jié)系統(tǒng)整體架構 PAGEREF _Toc344195431 h 9 HYPERLINK l _Toc344195432 第二節(jié)系統(tǒng)模塊設計 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ù)庫設計 PAGEREF _Toc344195435 h 11 HYPERLINK
12、 l _Toc344195436 第四章系統(tǒng)實現(xiàn) PAGEREF _Toc344195436 h 13 HYPERLINK l _Toc344195437 第一節(jié)數(shù)據(jù)采集 PAGEREF _Toc344195437 h 13 HYPERLINK l _Toc344195438 一、解析數(shù)據(jù)的實現(xiàn) PAGEREF _Toc344195438 h 13 HYPERLINK l _Toc344195439 第二節(jié)搜索引擎的實現(xiàn) PAGEREF _Toc344195439 h 16 HYPERLINK l _Toc344195440 第三節(jié)數(shù)據(jù)訪問層的實現(xiàn) PAGEREF _Toc344195440
13、h 19 HYPERLINK l _Toc344195441 第五章系統(tǒng)測試 PAGEREF _Toc344195441 h 20 HYPERLINK l _Toc344195442 第一節(jié)系統(tǒng)測試的必要性 PAGEREF _Toc344195442 h 20 HYPERLINK l _Toc344195443 一、單元測試 PAGEREF _Toc344195443 h 20 HYPERLINK l _Toc344195444 二、集成測試 PAGEREF _Toc344195444 h 21 HYPERLINK l _Toc344195445 三、驗收測試 PAGEREF _Toc3441
14、95445 h 21 HYPERLINK l _Toc344195446 第二節(jié)采集數(shù)據(jù)模塊的測試 PAGEREF _Toc344195446 h 21 HYPERLINK l _Toc344195447 第三節(jié)搜索引擎的測試 PAGEREF _Toc344195447 h 22 HYPERLINK l _Toc344195448 結束語 PAGEREF _Toc344195448 h 24 HYPERLINK l _Toc344195449 致謝 PAGEREF _Toc344195449 h 25 HYPERLINK l _Toc344195450 參考文獻 PAGEREF _Toc344
15、195450 h 26 緒論課題研究的目的和意義搜索引擎,通常指的是收集了互聯(lián)網(wǎng)上幾千萬到幾十億個網(wǎng)頁并對網(wǎng)頁中的每一個文字(即關鍵詞)進行索引,建立索引數(shù)據(jù)庫的全文搜索引擎。當用戶查找某個關鍵詞的時候,所有在頁面內(nèi)容中包含了該關鍵詞的網(wǎng)頁都將作為搜索結果被搜出來。在經(jīng)過復雜的算法進行排序后,這些結果將按照與搜索關鍵詞的相關度高低,依次排列。隨著信息化的發(fā)展,越來越多的人通過搜索引擎來尋找自己所需要的東西,用戶在搜索引擎中輸入某一關鍵詞的時候,會有成千上萬甚至百萬千萬上億的結果,那么在茫茫的信息海洋中我們?nèi)绾尾拍茏層脩粽业轿覀兙W(wǎng)站上相關的內(nèi)容呢?互聯(lián)網(wǎng)的信息如浩瀚的海洋一樣,如何在這個無邊無際
16、的海洋找出對用戶最有用的信息就是搜索引擎的主要作用。搜索引擎,往往是大多數(shù)用戶進入互聯(lián)網(wǎng)的入口。搜索引擎的出現(xiàn),整合了眾多網(wǎng)站信息,恰恰起到了信息導航的作用。通用搜索引擎就如同互聯(lián)網(wǎng)第一次出現(xiàn)的門戶網(wǎng)站一樣,大量的信息整合導航,極快的查詢,將所有網(wǎng)站上的信息整理在一個平臺上供網(wǎng)民使用,于是信息的價值第一次普遍的被眾多商家認可,迅速成為互聯(lián)網(wǎng)中最有價值的領域。搜索引擎的便捷使其成為互聯(lián)網(wǎng)最受歡迎的應用之一。以至于有相當多的人將瀏覽器的默認首頁設為搜索引擎,甚至形成了將網(wǎng)站名稱輸入到搜索框中而非瀏覽器地址欄這樣獨特的網(wǎng)絡導航習慣??偟膩碚f,搜索引擎直接改變了人們的網(wǎng)絡習慣,人們進入網(wǎng)絡第一個想到的
17、就是搜索引擎。網(wǎng)絡化就是信息化,在網(wǎng)絡化的今天、信息爆炸式增長的今天。研究搜索引擎具有重要而深遠的意義。搜索引擎的現(xiàn)狀與前景搜索引擎的現(xiàn)狀: 自1990年,加拿大麥吉爾大學(University of McGill)計算機學院的師生開發(fā)出Archie,成為意義上的第一個搜索引擎開始,搜索引擎發(fā)展迅速,越來越貼近人們的需求。目前主流的搜索引擎主要有:Google搜索、百度搜索、搜狗搜索。Google搜索擁有的數(shù)據(jù)庫是幾大搜索引擎中最大的。因此,Google的搜索結果往往比別的引擎更多。它盡量把與關鍵詞有關的頁面都呈現(xiàn)給搜索者,廣泛,但缺乏精度。由于Google的數(shù)據(jù)庫有很多來自blog網(wǎng)站,同時
18、也有很多blogger搜索Google,因此Google很重視對blog網(wǎng)站資料的索引,搜索結果中往往含有比其它網(wǎng)站更多的blog信息。百度搜索一直以開發(fā)最符合中國人使用習慣的搜索引擎為己任,經(jīng)過不斷的努力和堅持不懈,百度搜索引擎已成為中國最強大的中文搜索引擎。采用的核心技術:超鏈分析超鏈分析技術,是新一代搜索引擎的關鍵技術,現(xiàn)在已為世界各大搜索引擎普遍采用,百度總裁李彥宏就是超鏈分析專利的唯一持有人。在學術界,一篇論文被引用得越多就說明其越好,學術價值就越高。超鏈分析就是通過分析鏈接網(wǎng)站的多少來評價被鏈接的網(wǎng)站質(zhì)量,這保證了用戶在百度搜索時,越受用戶歡迎的內(nèi)容排名越靠前。搜狗搜索是由國內(nèi)著名
19、的門戶網(wǎng)站搜狐SOHU.COM運作的,搜狐是國內(nèi)最早提供搜索服務的站點?;ヂ?lián)網(wǎng)概念在國內(nèi)的普及,搜狐功不可沒。在2001年年初由CNAZ(中文網(wǎng)站評估認證網(wǎng))舉辦的搜索引擎網(wǎng)絡專項功能排名調(diào)查中,搜狐名列第一。搜索引擎的前景:搜索引擎是人們使用最多的網(wǎng)絡工具,人們使用的越多的同時對它的要求就越高,現(xiàn)在的搜索引擎已經(jīng)不能滿足人們搜索的需要了。據(jù)國際數(shù)據(jù)公司(IDC)曾公布的一份報告表明,被大肆宣傳為“使用簡便易用,搜索結果豐富”的搜索引擎技術正在被信息更集中的局域網(wǎng)取代,因為大多數(shù)搜索系統(tǒng)的表現(xiàn)與用戶的期望值相差太大,諸如數(shù)據(jù)量高速增長的視頻、音頻等多媒體信息的檢索,現(xiàn)在仍然是無法突破的難題。對
20、多媒體內(nèi)容的處理尚不成熟,有的搜索引擎不支持動態(tài)網(wǎng)頁。人們期望引擎不僅能挑出自己需要的文章,還能挑出自己所關心的圖片、視頻、音樂等。如何解決這些難題已成為第三代搜索引擎探索的方向。一個好的搜索引擎不再僅憑借數(shù)據(jù)庫大小、更新頻率、檢索速度、對多語言的支持這幾個基本特性來衡量,隨著數(shù)據(jù)庫容量的不斷膨脹,如何從龐大的資料庫中精確地找到正確的資料,被公認為是下一代搜索技術的競爭要點。需求分析開發(fā)背景而隨著新聞技術的飛速發(fā)展,特別是因特網(wǎng)應用的迅速普及,網(wǎng)站越來越多,并且每天全球互聯(lián)網(wǎng)網(wǎng)頁數(shù)目以千萬級的數(shù)量增加。要在浩瀚的網(wǎng)絡新聞中尋找所需要的材料無異于大海撈針。網(wǎng)頁是因特網(wǎng)的最重要組成部分,也是人們獲
21、取網(wǎng)絡信息的最主要來源,為了方便人們在大量繁雜的網(wǎng)頁中尋找出自己需要的信息,搜索引擎就應運而生了。搜索引擎是人們網(wǎng)上購物、看電影、看小說、看圖片等網(wǎng)絡使用中的第一個首選入口。其重要性不言而喻?;ヂ?lián)網(wǎng)的海量信息,讓人眼花繚亂,如果在短時間內(nèi)沒有找到用戶想要的信息,不僅影響用戶的心情,而且影響用戶的工作效率。所以搜索引擎最核心也是最重要的是對關鍵字的匹配程度。匹配程度越高得到的結果越貼近用戶的需求,也越得到用戶的青睞。目前的搜索引擎可分為三類:一是全文搜索引擎,它是從互聯(lián)網(wǎng)提取各個網(wǎng)站的信息(以網(wǎng)頁文字為主),建立起數(shù)據(jù)庫,并能檢索與用戶查詢條件相匹配的記錄,按一定的排列順序返回結果。二是目錄索引
22、,它是按目錄分類的網(wǎng)站鏈接列表而已,用戶完全可以按照分類目錄找到所需要的信息,不依靠關鍵詞進行查詢。三是元搜索引擎,他先是接受用戶查詢請求后,同時在多個搜索引擎上搜索,并將結果返回給用戶。系統(tǒng)功能功能劃分主要功能包括:數(shù)據(jù)采集、數(shù)據(jù)保存、數(shù)據(jù)排序、搜索引擎、前臺顯示。功能描述數(shù)據(jù)采集對指定鏈接的網(wǎng)頁中的所有的超連接進行采集,然后對沒一條超鏈接進行進一步的解析,按一定的規(guī)則把超鏈接的網(wǎng)頁的內(nèi)容采集出來。數(shù)據(jù)保存把采集到的數(shù)據(jù)保存到數(shù)據(jù)庫。數(shù)據(jù)的主要內(nèi)容包括:網(wǎng)頁標題、作者、內(nèi)容、發(fā)表時間、鏈接地址。數(shù)據(jù)排序?qū)Ψ纤阉鳁l件的數(shù)據(jù)進行排序,排序規(guī)則是關鍵字的匹配和網(wǎng)頁的發(fā)表時間。搜索引擎首先響應用戶
23、的HTTP請求,獲取搜索關鍵字;然后查詢數(shù)據(jù)庫里面匹配關鍵字的數(shù)據(jù),把符合條件的數(shù)據(jù)提取出來,存到一個臨時表中;最后查詢臨時表的數(shù)據(jù)并排序,返回數(shù)據(jù)。前臺顯示獲取從服務器返回的數(shù)據(jù),按照一定的規(guī)則顯示在最后的顯示頁面。相關技術及工具簡介HTML語言簡介HTML(Hyper Text Markup Language 超文本標記語言)是一種用來制作超文本文檔的簡單標記語言。用HTML編寫的超文本文檔稱為HTML文檔,它能獨立于各種操作系統(tǒng)平臺(如UNIX,WINDOWS等)。自1990年以來HTML就一直被用作World Wide Web上的信息表示語言,用于描述Homepage的格式設計和它與W
24、WW上其它Homepage的連結信息。HTML文檔(即Homepage的源文件)是一個放置了標記的ASCII文本文件,通常它帶有.html或.htm的文件擴展名。生成一個HTML文檔主要有以下三種途徑:手工直接編寫手工直接編寫(例如用你所喜愛的ASCII文本編輯器或其它HTML的編輯工具)。格式轉(zhuǎn)換通過某些格式轉(zhuǎn)換工具將現(xiàn)有的其它格式文檔(如WORD文檔)轉(zhuǎn)換成HTML文檔。服務器生成由Web服務器(或稱HTTP 服務器)一方實時動態(tài)地生成。HTML語言是通過利用各種標記(tags)來標識文檔的結構以及標識超鏈(Hyperlink)的信息。雖然HTML語言描述了文檔的結構格式,但并不能精確地定
25、義文檔信息必須如何顯示和排列,而只是建議Web瀏覽器(如Mosiac,Netscape等)應該如何顯示和排列這些信息,最終在用戶面前的顯示結果取決于Web瀏覽器本身的顯示風格及其對標記的解釋能力。這就是為什么同一文檔在不同的瀏覽器中展示的效果會不一樣。JavaScript語言簡介JavaScript 是一種新的描述語言,它是介于HTML和Java高級語言之間的一種語言,它更接近于高級語言,但易學,功能稍弱。此語言可以被嵌入 HTML 的文件之中,它是一種通用的、基于原型的、面向?qū)ο蟮哪_本語言。它不占用很多系統(tǒng)和網(wǎng)絡資源的情況下提供一種可以插入到不同的應用程序的通用代碼。透過JavaScript
26、可以做到回應使用者的需求事件 (如: form 的輸入) 而不用任何的網(wǎng)路來回傳輸資料,所以當一位使用者輸入一項資料時,它不用經(jīng)過傳給服務器端 (server) 處理,再傳回來的過程,而直接可以被客戶端 (client) 的應用程式所處理。其中JavaScript與Java的區(qū)別在于: (1) JavaScript是解釋性的語言,當程序執(zhí)行的時候,瀏覽器一邊解釋一邊執(zhí)行。而Java是一種編譯型的語言,必須通過JDK的編譯,在Java虛擬機上運行。(2) 代碼格式不一樣,Java的代碼經(jīng)過JDK編譯后成為二進制的以.class作為擴展名的文件,而JavaScript是純文本的文件。(3) 在HT
27、ML中嵌入的方式不一樣。Java可以通過Applet嵌入HTML中,而JavaScript是直接寫入其中。JSP簡介JSP(JavaServer Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術標準。在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標記(tag),就構成了JSP網(wǎng)頁(*.jsp)。Web服務器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序片段,然后將執(zhí)行結果以HTML格式返回給客戶。程序片段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送 email 等等,這就是建立動態(tài)網(wǎng)站所需要的功
28、能。所有程序操作都在服務器端執(zhí)行,網(wǎng)絡上傳送給客戶端的僅是得到的結果,對客戶瀏覽器的要求最低,可以實現(xiàn)無Plugin,無ActiveX,無Java Applet,甚至無Frame。Web開發(fā)輕平臺Tomcat簡介Tomcat是一個免費的開源的Serlvet容器,它是Apache基金會的Jakarta項目中的一個核心項目,由Apache,Sun和其它一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規(guī)范總能在Tomcat中得到體現(xiàn)。與傳統(tǒng)的桌面應用程序不同,Tomcat中的應用程序是一個WAR(Web Archive)文件。WAR是Sun提出的一種Web應用程序
29、格式,與JAR類似,也是許多文件的一個壓縮包。這個包中的文件按一定目錄結構來組織:通常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會有一個WEB-INF目錄,這個目錄很重要。通常在WEB-INF目錄下有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當然也可以放到系統(tǒng)的CLASSPATH中,但那樣移植和管理起來不方便。 在Tomcat中,應用程序的部署
30、很簡單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個文件,并將其解壓。你在瀏覽器中訪問這個應用的Jsp時,通常第一次會很慢,因為Tomcat要將Jsp轉(zhuǎn)化為Servlet文件,然后編譯。編譯以后,訪問將會很快。另外Tomcat也提供了一個應用:manager,訪問這個應用需要用戶名和密碼,用戶名和密碼存儲在一個xml文件中。通過這個應用,輔助于Ftp,你可以在遠程通過Web部署和撤銷應用。當然本地也可以。MYSQL數(shù)據(jù)庫簡介MySql是一個快速、多線程、多用戶的SQL數(shù)據(jù)庫服務器,具有功能強,使用簡單,管理方便,運行速度快,可靠性高,安全保密等特點。其出
31、現(xiàn)雖然只有短短的數(shù)年時間,但憑借著“開放源代碼”的東風,它從眾多的數(shù)據(jù)庫中脫穎而出,成為PHP的首選數(shù)據(jù)庫。除了因為幾乎是免費的這點之外,支持正規(guī)的SQL查詢語言和采用多種數(shù)據(jù)類型,能對數(shù)據(jù)進行各種詳細的查詢等都是PHP選擇MySql的主要原因。以下是MySql數(shù)據(jù)庫的主要特征。 (1) MySQL的核心程序采用完全的多線程編程。線程是輕量級的進程,它可以靈活地為用戶提供服務,而不過多的系統(tǒng)資源。用多線程和C語言實現(xiàn)的MySQL能很容易充分利用CPU。 (2) MySQL可運行在不同的操作系統(tǒng)下。簡單地說,MySQL可以支持Windows95/98/NT/2000以及UNIX、Linux和SU
32、N OS等多種操作系統(tǒng)平臺。這意味著在一個操作系統(tǒng)中實現(xiàn)的應用可以很方便地移植到其他的操作系統(tǒng)下。 (3) MySQL有一個非常靈活而且安全的權限和口令系統(tǒng)。當客戶與MySQL服務器連接時,他們之間所有的口令傳送被加密,而且MySQL支持主機認證。 (4) MySQL支持ODBC for Windows。MySQL支持所有的ODBC 2.5函數(shù)和其他許多函數(shù),這樣就可以用Access連接MySQL服務器,從而使得MySQL的應用被大大擴展。 (5) MySQL支持大型的數(shù)據(jù)庫。雖然對于用PHP編寫的網(wǎng)頁來說只要能夠存放上百條以上的記錄數(shù)據(jù)就足夠了,但MySQL可以方便地支持上千萬條記錄的數(shù)據(jù)庫
33、。作為一個開放源代碼的數(shù)據(jù)庫,MySQL可以針對不同的應用進行相應的修改。 (6) MySQL擁有一個非??焖俣曳€(wěn)定的基于線程的內(nèi)存分配系統(tǒng),可以持續(xù)使用面不必擔心其穩(wěn)定性。事實上,MySQL的穩(wěn)定性足以應付一個超大規(guī)模的數(shù)據(jù)庫。 (7) 強大的查詢功能。MySQL支持查詢的SELECT和WHERE語句的全部運算符和函數(shù),并且可以在同一查詢中混用來自不同數(shù)據(jù)庫的表,從而使得查詢變得快捷和方便。 如今,包括Siemens和Silicon Graphics這樣的國際知名公司也開始把MySQL作為其數(shù)據(jù)庫管理系統(tǒng),這就更加證明了MySQL數(shù)據(jù)庫的優(yōu)越性能和廣闊的市場發(fā)展前景。系統(tǒng)設計系統(tǒng)整體架構該
34、系統(tǒng)所采用的B/S 模式在邏輯體系結構上可以分為用戶表現(xiàn)層、業(yè)務邏輯層、數(shù)據(jù)服務層3 層體系統(tǒng)結構.B/S 模式有著C/S 模式不可比擬的優(yōu)勢,如:簡化了客戶端,不論基于何種平臺,只須安裝一種通用的瀏覽器,采用同樣的界面訪問;能夠跨越異質(zhì)異構網(wǎng)絡;穩(wěn)定性高;特別適用于網(wǎng)上信息發(fā)布;服務器端升級維護集中、方便,服務器端可以任意擴充,而對客戶端不產(chǎn)生任何影響等.圖3.1.1為B/S 模式體系結構圖.圖3.1.1系統(tǒng)模塊設計按照系統(tǒng)分析的結果,搜索引擎系統(tǒng)設計的主要是實現(xiàn)數(shù)據(jù)采集、數(shù)據(jù)保存、數(shù)據(jù)排序、搜索引擎、前臺顯示。根據(jù)整體的需求,這個系統(tǒng)也可以分為兩個大的分類,即采集數(shù)據(jù)和顯示數(shù)據(jù)。所以搜索系
35、統(tǒng)主要可以分成兩個模塊:數(shù)據(jù)采集模塊和搜索引擎模塊。數(shù)據(jù)采集模塊數(shù)據(jù)采集模塊的功能又稱“網(wǎng)絡蜘蛛”。 顧名思義,網(wǎng)絡蜘蛛就是在網(wǎng)絡上爬行的程序,用他來抓取web服務器上的web文檔,它可以在掃描web頁面的同時檢索其內(nèi)的超鏈接并加入掃描隊列等待以后掃描。掃描隊列主要掃描URL鏈接和URL鏈接下的網(wǎng)頁內(nèi)容,包括:網(wǎng)頁標題、作者、內(nèi)容、發(fā)表時間、鏈接地址。獲取到的數(shù)據(jù),逐一保存到數(shù)據(jù)庫中去。具體實現(xiàn)邏輯如圖。圖3.2.1搜索引擎模塊搜索引擎模塊主要完成用戶對數(shù)據(jù)的搜索功能。用戶使用瀏覽器,輸入搜索的關鍵字,點擊提交。服務器收到用戶發(fā)出的搜索請求,獲取請求中的搜索關鍵字,然后到數(shù)據(jù)庫中搜索匹配關鍵字
36、的數(shù)據(jù)。取出匹配的數(shù)據(jù)之后按一定的規(guī)則排序,最后返回展示到用戶界面。整個模塊采用的是MVC三層設計模式,M層(即Modle層)代表實體數(shù)據(jù)模塊,V層(即View層)代表數(shù)據(jù)展示模塊,C層(即Control層)代表邏輯控制模塊。具體設計邏輯如圖。圖3.2.2數(shù)據(jù)庫設計根據(jù)系統(tǒng)要求與模塊設計,數(shù)據(jù)庫設計主要分成兩個表:數(shù)據(jù)表和排序臨時表。數(shù)據(jù)表的主要作用是存儲“數(shù)據(jù)采集器”采集下來的數(shù)據(jù),排序臨時表是根據(jù)搜索關鍵字取出來排序的數(shù)據(jù)。數(shù)據(jù)表包括的字段有:編號、標題、作者、內(nèi)容、發(fā)表時間、鏈接地址。字段名是否主鍵字段類型字段長度是否為允許為空備注id是bigint32否編號newstitle否varc
37、har100是標題newsauthor否varchar100是作者newscontent否text65535是內(nèi)容newsurl否varchar300是鏈接地址newsdate否varchar100是日期表3.3.1排序臨時表包括的字段有:編號、標題、作者、內(nèi)容、發(fā)表時間、鏈接地址。字段名是否主鍵字段類型字段長度是否為允許為空備注id是bigint32否編號newstitle否varchar100是標題newsauthor否varchar100是作者newscontent否text65535是內(nèi)容newsurl否varchar300是鏈接地址newsdate否varchar100是日期news
38、date_int否varchar100是日期數(shù)值表3.3.2系統(tǒng)實現(xiàn)數(shù)據(jù)采集數(shù)據(jù)采集的實現(xiàn)主要是用了java swing技術。在操作界面中有url輸入框、設置抓取周期輸入框。url指的是采集目標的網(wǎng)址。抓取周期是隔一定的時間抓取一次。當點擊開始按鈕時,系統(tǒng)會檢查輸入url的合法性,如果url合法,則檢查抓取周期是否輸入。檢查都通過后,系統(tǒng)啟動線程抓取數(shù)據(jù)。實現(xiàn)效果如圖。圖4.1.1解析數(shù)據(jù)的實現(xiàn)解析數(shù)據(jù)的實現(xiàn)主要用到了開源jar包htmlparser.jar,htmlparser.jar可以實現(xiàn)對幾乎全部網(wǎng)頁的解析。里面包含有多種解析方法。本系統(tǒng)中主要用到了標題解析、內(nèi)容解析、作者解析、日期解
39、析。標題解析的實現(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é)點 if(node_
40、title != null) titleName = node_title.toPlainTextString(); catch (ParserException ex) ex.printStackTrace(); return titleName; 內(nèi)容解析的實現(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(我來說兩句, ); else System.out.println(沒有得到新聞內(nèi)容!); catch (ParserException ex) ex.pri
44、ntStackTrace(); return content; 作者解析的實現(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的法則對網(wǎng)頁進行過濾 NodeList authorList = (NodeList) parser.parse(newsauthorFilter); /獲取責任編輯字符串 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; 日期解析的實現(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; 搜索引擎的實現(xiàn)搜索引擎的實現(xiàn)是整個系統(tǒng)的核心部分,其主要要解決的問題是提取出匹配搜索關鍵字的數(shù)據(jù),并進行排序。關鍵字的匹配方式是:先用關鍵字和數(shù)據(jù)庫中的newstit
49、le字段進行匹配,然后再匹配newscontent字段。排列的方式是:先把時間轉(zhuǎn)換成數(shù)字形式,然后用SQL語句中的從大到小排序。圖4.2.1實現(xiàn)查詢數(shù)據(jù)的關鍵代碼如下: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ù)訪問層的實現(xiàn)數(shù)據(jù)訪問層是與數(shù)據(jù)庫交互的層面.主要的作用是對數(shù)據(jù)的持久化操作,增強系統(tǒng)的可移植性,隱藏數(shù)據(jù)訪問細節(jié).在系統(tǒng)實現(xiàn)過程中,核心業(yè)務主要通過Web Service層來實現(xiàn),Web層將用戶請求發(fā)給Web Service層,WebService層進行業(yè)務處理,并通過數(shù)據(jù)訪問層與后臺數(shù)據(jù)庫相交換,將數(shù)據(jù)結果發(fā)給Web層。數(shù)據(jù)訪問層實現(xiàn)的主要方法是JDBC技術。數(shù)據(jù)庫是用MySQL數(shù)據(jù)庫作為容器。實現(xiàn)原理如圖。連接數(shù)據(jù)庫代碼如下: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ù)庫操作代碼如下: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語句出錯: + ex.getMessage();return result;系統(tǒng)測試系統(tǒng)測試的必要性隨著信息技術的飛速發(fā)展,軟件產(chǎn)品已深入到社會生活的各個領域,軟件產(chǎn)品的質(zhì)量自然成為人們關注的焦點。作為商品的產(chǎn)品,都需要經(jīng)過嚴格的質(zhì)量測試,軟件產(chǎn)品也不能例外。軟件測試是發(fā)現(xiàn)軟件中錯誤和缺陷的重要手段,并且實踐證明,軟件中存在缺陷所造
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學生服裝店兼職店員合同
- 2025屆鄂西南三校合作體物理高二上期末聯(lián)考試題含解析
- 2025屆甘孜市重點中學物理高二第一學期期中學業(yè)水平測試模擬試題含解析
- 貴州省銅仁市2025屆物理高二上期末統(tǒng)考試題含解析
- 2025屆黑龍江省大興安嶺漠河縣第一中學物理高二上期中質(zhì)量檢測模擬試題含解析
- 2025屆廣西桂林市全州縣二中高一物理第一學期期末考試模擬試題含解析
- 天津市河西區(qū)2025屆高三物理第一學期期末達標檢測模擬試題含解析
- 2025屆陜西省西安三中物理高二第一學期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 2025屆河北省曲陽一中物理高一第一學期期末綜合測試試題含解析
- 2025屆江蘇省南通市如東中學高二物理第一學期期末監(jiān)測試題含解析
- 教育培訓行業(yè)2024年生產(chǎn)與制度改革方案
- PCB文字噴印工藝
- 2024年廖俊波同志先進事跡心得體會教師4篇
- 高考物理系統(tǒng)性復習 (能力提高練) 第五節(jié) 實驗:探究小車速度隨時間變化的規(guī)律(附解析)
- 眼科護理中的孕婦與產(chǎn)婦護理
- 業(yè)主業(yè)主委員會通用課件
- 了解金融市場和金融產(chǎn)品
- 南京理工大學2015年613物理化學(含答案)考研真題
- 初中數(shù)學應用題解題思路分享
- 企業(yè)綠色發(fā)展建設方案
- 小朋友高爾夫訓練計劃書
評論
0/150
提交評論