版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于JAVA的搜索引擎的初步設(shè)計(jì)目錄TOC\o"1-2"\h\u31737基于JAVA的搜索引擎的初步設(shè)計(jì) 19790摘要 1301451緒論 2262961.1項(xiàng)目背景 2220181.2國內(nèi)外發(fā)展現(xiàn)狀及分類 3244551.3本論文組織結(jié)構(gòu)介紹 48955第6章系統(tǒng)測試,對系統(tǒng)做了相關(guān)測試和評價說明。 4179222相關(guān)技術(shù)介紹 5113832.1什么是搜索引擎 58772.2SQLServer數(shù)據(jù)庫 6135042.3Tomcat服務(wù)器 6160222.4章末小結(jié) 7180053搜索引擎的基本原理 78373.1基本組成及其功能 7174323.3章末小結(jié) 12322984系統(tǒng)分析與設(shè)計(jì) 12286774.1系統(tǒng)分析 12146354.2系統(tǒng)概要設(shè)計(jì) 12176064.2系統(tǒng)實(shí)現(xiàn)目標(biāo) 13254114.3數(shù)據(jù)庫表 1383334.4章末小結(jié) 14185235系統(tǒng)詳細(xì)實(shí)現(xiàn) 14297285.1實(shí)現(xiàn)環(huán)境配置 141806系統(tǒng)測試 21325166.1測試重要性 21237756.2測試用例 22107816.3章末小結(jié) 2331329結(jié)論 2323624參考文獻(xiàn) 24摘要現(xiàn)代社會是一個數(shù)據(jù)爆炸的時代,在日益豐富的網(wǎng)絡(luò)信息資源的情況下,人們意識到需要從網(wǎng)絡(luò)中快速有效地提取他們所需的潛在和有價值的信息,使之能在工作和日常生活中發(fā)揮有效作用。由于搜索引擎技術(shù)已經(jīng)解決了用戶在因特網(wǎng)上搜索大量信息的問題,因此如今,無論是高速發(fā)展的計(jì)算機(jī)行業(yè),還是信息產(chǎn)業(yè)的新銳企業(yè),搜索引擎技術(shù)都被當(dāng)作是一項(xiàng)創(chuàng)新技術(shù),為此開展討論和研發(fā)。所謂搜索引擎,就是利用已有的搜索策略和方法,通過可視化信息,并最終對所發(fā)現(xiàn)的信息進(jìn)行分類和過濾,在執(zhí)行相關(guān)的計(jì)算機(jī)程序后,向搜索人員提供搜索結(jié)果。這項(xiàng)服務(wù)的目的是向用戶提供一個計(jì)算機(jī)系統(tǒng)來處理他們尋找的信息,搜索引擎大體上有四類,分別是全文搜索引擎、垂直搜索引擎、元搜索引擎和目錄搜索引擎,這些搜索引擎具有不同的執(zhí)行策略,分別適用于不同的環(huán)境本文介紹了搜索引擎的出現(xiàn)、搜索引擎的需求、搜索引擎的實(shí)現(xiàn)內(nèi)容、搜索引擎優(yōu)化以及關(guān)鍵技術(shù)。與此同時,關(guān)于提高搜索引擎性能和搜索準(zhǔn)確率方面也在做著深入的研究。關(guān)鍵詞:Web搜索;搜索性能;搜索準(zhǔn)確率;搜索引擎1緒論1.1項(xiàng)目背景WorldWideWeb(環(huán)球信息網(wǎng)),簡稱3W,有時軟件開發(fā)或互聯(lián)網(wǎng)等行業(yè)也會稱其為Web,以WWW開頭,由不同文檔、多媒體文件連接而成的邏輯網(wǎng)絡(luò)(每個節(jié)點(diǎn)都是頂級域名,即網(wǎng)站)我國官方則將其譯為萬維網(wǎng)。在萬維網(wǎng)中,以事物為單位,將其稱之為“資源”,通過統(tǒng)一資源定位系統(tǒng)(uniformresourcelocator;URL)對其進(jìn)行標(biāo)識,之后在使用超文本傳輸協(xié)議(HyperTextTransferProtocol,HTTP)發(fā)送給用戶,在http中資源變成了獨(dú)立的連接,用戶可以點(diǎn)擊鏈接訪問該資源萬維網(wǎng),因特網(wǎng)(Internet),互聯(lián)網(wǎng)(internet)經(jīng)常被人們混淆。實(shí)際上三者存在差異,萬維網(wǎng)是基于C/S方式的信息發(fā)現(xiàn)技術(shù)和超文本技術(shù)的綜合,萬維網(wǎng)是服務(wù)與數(shù)據(jù)資源之間的共享利用,只要使用HTTP協(xié)議,就是萬維網(wǎng);因特網(wǎng)是互聯(lián)網(wǎng)中的一種,由數(shù)以萬計(jì)的設(shè)備組成的網(wǎng)絡(luò),提供了:www(萬維網(wǎng))服務(wù)、Archie、名錄服務(wù)(Whois)、Gopher、WAIS服務(wù)等等服務(wù);互聯(lián)網(wǎng)是由通信的設(shè)備,如PC、手機(jī)、服務(wù)器等入網(wǎng)設(shè)備組成的網(wǎng)絡(luò),泛指由計(jì)算機(jī)網(wǎng)絡(luò)(包括局域網(wǎng)、城域網(wǎng)、廣域網(wǎng)等)組成的網(wǎng)絡(luò),互聯(lián)網(wǎng)包含因特網(wǎng),因特網(wǎng)包含萬維網(wǎng)。1994年之前,人們通過報紙雜志等紙質(zhì)媒體或電視、錄像機(jī)、影碟機(jī)和攝像機(jī)等傳統(tǒng)電視媒體獲取信息,直到萬維網(wǎng)(WorldWideWeb)的出現(xiàn)了,信息時代取得了重大突破,相對與遲鈍的傳統(tǒng)媒體,萬維網(wǎng)極大的縮短了人們獲取信息的時間,受到大眾的追捧,激發(fā)了人們的熱情,互聯(lián)網(wǎng)19世紀(jì)60年代就已經(jīng)誕生了,但其操作過于復(fù)雜,且不同的計(jì)算機(jī)具有不同的操作系統(tǒng)和文件格式,各個計(jì)算機(jī)如同孤島一般無法交流,而萬維網(wǎng)通過HTTP協(xié)議使得所有的資源具有了統(tǒng)一的格式,打通了之前互聯(lián)網(wǎng)的信息孤島。搜索引擎起源于,1990年加拿大(Canada)的麥吉爾大學(xué)(Montreal)的三名學(xué)生發(fā)明了Archie(ArchieFAQ)。Archie是第一個對互聯(lián)網(wǎng)上匿名FTP網(wǎng)站文件進(jìn)行自動索引的程序,可以定期自動搜索系統(tǒng)里保存的文件名和其相關(guān)的資源,Archie本質(zhì)是一個具有搜索功能的FTP文件列表,只能通過文件名進(jìn)行精確搜索,之后系統(tǒng)會將對應(yīng)的FTP地址告訴客戶,它和真正的搜索引擎有不小的差別。之后收到Archie的啟發(fā),陸續(xù)出現(xiàn)了Veronica,Excite的搜索程序,搜索引擎也出現(xiàn)了其他形式。如今,百度和谷歌已經(jīng)取得了不同尋常的成就,可以說,他們已經(jīng)成為了行業(yè)領(lǐng)袖,所以,世界各地也將部分愿景融入到搜索領(lǐng)域。各種搜索引擎如雨后春筍般的萌發(fā)。無論是曾經(jīng)的
Google和
Yahoo引擎,還是現(xiàn)在的百度中文引擎、360工具等等,不僅搜索引擎的種類不斷增加,而且搜索引擎的服務(wù)質(zhì)量也越來越全面。網(wǎng)絡(luò)信息資源也隨著網(wǎng)絡(luò)技術(shù)的不斷進(jìn)步而成倍增長(關(guān)系以正比例變化)。所以,要滿足用戶的需求,不僅要快速地找到資源,還要提高資源的質(zhì)量,就必須在各種引擎中引入可跟蹤性的概念。此外,企業(yè)級應(yīng)用程序市場中,在處理文檔存儲和企業(yè)的管理系統(tǒng)系統(tǒng)時,由于對搜索資源的巨大需求和其精確度的提高,每個人都很重視全文檢索。在這樣的環(huán)境下,搜索引擎的技術(shù)也在迅猛發(fā)展。在各種貼吧、微博、論壇等的網(wǎng)絡(luò)信息載體中進(jìn)行了熱烈地討論。在進(jìn)入全面信息化的現(xiàn)在,搜索引擎必定會是熱門的研究方向。1.2國內(nèi)外發(fā)展現(xiàn)狀及分類目前網(wǎng)絡(luò)信息呈指數(shù)增長,其復(fù)雜性是顯而易見的,但是網(wǎng)絡(luò)訪問技術(shù)的發(fā)展并不令人滿意,仍然存在許多弊端和特殊性。理由如下:(1)隨著網(wǎng)頁數(shù)量的迅速增長,即使他是專家,他的知識也不能滿足所有人的需要,而其卻承受著巨大的負(fù)擔(dān)。無法以人工的方式處理這么多信息,并有效地進(jìn)行分類,更不能查找和使用它?;ヂ?lián)網(wǎng)用戶在使用簡單的搜索詞時,會遇到一大堆雜亂的信息,而這些雜亂的信息相對來說是冗余的,而且數(shù)量有限,不能被用戶接受。(2)檢查獲取信息的速度緩慢。一些網(wǎng)站經(jīng)常會在網(wǎng)頁上發(fā)現(xiàn)特定的關(guān)鍵字,這些關(guān)鍵字很容易被一些知名搜索引擎采用來提高網(wǎng)站的知名度,但是實(shí)際上,這些關(guān)鍵字并沒有給用戶提供任何有價值的信息。(3)網(wǎng)絡(luò)信息變化迅速。在快節(jié)奏的社會里,人們更喜歡快餐文化,這意味著要盡快收集信息。但是無論網(wǎng)絡(luò)傳輸速度有多快,分布式信息的分布都會給實(shí)時搜索帶來困難,即使網(wǎng)站在最后時刻更新。很多事情將在下一秒發(fā)生。實(shí)時性是人們獲取網(wǎng)絡(luò)信息的目標(biāo),但實(shí)時性難以實(shí)現(xiàn)。迅速而準(zhǔn)確是優(yōu)秀搜索引擎的標(biāo)尺,所以開發(fā)網(wǎng)絡(luò)搜索工具的關(guān)鍵是持續(xù)改進(jìn)查詢的速度和效率。在龐大數(shù)據(jù)量的前提下提高它的效率,能夠提供更高的服務(wù)質(zhì)量,并改善甚至消除用戶對訪問網(wǎng)絡(luò)信息的不滿。WWW:作為當(dāng)今世界上最大的域名注冊和虛擬主機(jī)提供商,現(xiàn)在有許多域名,但大多數(shù)都是以www開頭,其費(fèi)用也是最昂貴的,但有些域名并沒有以www開頭。先直接從二級域名開始,在建立網(wǎng)站時,我們先購買域名,然后再根據(jù)項(xiàng)目大小訂購服務(wù)器。在Linux和Windows的基礎(chǔ)上,服務(wù)器可以分成不同的系統(tǒng),并根據(jù)開發(fā)語言,根據(jù)上傳代碼的方法來選擇服務(wù)器。您也可以選擇服務(wù)器。該服務(wù)具有特定接口。你當(dāng)然也可以在Linux系統(tǒng)中輸入相應(yīng)的命令。因?yàn)槟愕碾娔X是Windows,使用Windows服務(wù)器有很大問題,在你需要進(jìn)入其他服務(wù)器,只能選擇一臺服務(wù)器,而同時選擇兩臺服務(wù)器。之后是建立網(wǎng)站,創(chuàng)建文件,編寫代碼,ftp上傳網(wǎng)絡(luò),推廣維護(hù)。1.3本論文組織結(jié)構(gòu)介紹本次設(shè)計(jì)是在Lucene技術(shù)之上進(jìn)行的開發(fā),最終成功的設(shè)計(jì)出搜索引擎的全過程。從開始本次設(shè)計(jì)到最終的實(shí)現(xiàn),都會在下述做詳細(xì)的介紹:第1章緒論,本章主要從如下幾個方面做了闡述:1、本次設(shè)計(jì)的系統(tǒng)所會面臨的問題;2、怎么處理所面臨的難題;3、攻克難題的詳細(xì)內(nèi)容;4、本次課題是基于什么樣的研究背景、意義而進(jìn)行;5、本次設(shè)計(jì)的可行性分析以及論文中各章節(jié)內(nèi)容描述。第2章相關(guān)技術(shù)介紹,對涉及到的理論知識和用到的開發(fā)工具做相關(guān)闡述。第3章搜索引擎的基本原理,詳細(xì)介紹了搜索引擎的基本組成結(jié)構(gòu)和工作原理。第4章搜索引擎系統(tǒng)的分析與設(shè)計(jì),根據(jù)所需要實(shí)現(xiàn)的功能入手,一步步的完成設(shè)計(jì)目標(biāo)。第5章搜索引擎系統(tǒng)的具體設(shè)計(jì)步驟,逐步詳細(xì)地闡述了該設(shè)計(jì)的實(shí)現(xiàn)過程,以及在設(shè)計(jì)過程中可能遇到的問題。第6章系統(tǒng)測試,對系統(tǒng)做了相關(guān)測試和評價說明。最后:總結(jié)、致謝、參考文獻(xiàn)。2相關(guān)技術(shù)介紹2.1什么是搜索引擎由于網(wǎng)絡(luò)信息的爆炸式增長,網(wǎng)絡(luò)搜索引擎的創(chuàng)建已被提上議事日程,并且自1990年以來一直在不斷發(fā)展。此次設(shè)計(jì)的是一種專門用于用戶對Internet上的各種信息進(jìn)行調(diào)查
,以自己的方式在Internet上搜索信息,獲取信息,然后搜索信息,對信息進(jìn)行重組處理,再重新交付給客戶的服務(wù),用戶可以通過資源導(dǎo)航目標(biāo)免費(fèi)搜索帶有關(guān)鍵字,自由詞等的信息,也可以使用搜索全文,或按類別搜索,甚至可以添加任何需要限制的信息,例如姓名,性別,發(fā)布者,序列號等。如今搜索引擎提供的信息資源導(dǎo)航服務(wù)已發(fā)展成互聯(lián)網(wǎng)上非常重要的網(wǎng)絡(luò)服務(wù)之一,搜索引擎網(wǎng)站也被稱之為“網(wǎng)絡(luò)門戶”。目前,由搜索引擎提供的信息資源導(dǎo)航服務(wù)已經(jīng)成為互聯(lián)網(wǎng)上一項(xiàng)重要的網(wǎng)絡(luò)服務(wù),搜索引擎網(wǎng)站也被稱為“門戶網(wǎng)站”?;谑占降馁Y源和用戶可用的資源的不同,搜索引擎目前可以分為兩類:(1)目錄搜索引擎:搜索基于人工方案或半自動工作流程進(jìn)行搜索,然后指派專業(yè)人員查看信息,使用手動過濾信息的方式,最后將信息存儲到一個指定類別中。大部分這樣的信息都是直接與網(wǎng)站交互的,只能通過目錄和直接搜索服務(wù)來獲取。由于這種搜索引擎使用了人類的智慧,提供的信息質(zhì)量高,與信息搜索完全相關(guān),但是要保證信息更新基于閱讀者的分類那就不及時了,而且信息的量過大,以致維護(hù)工作將變得非常困難。典型代表雅虎(Yahoo!)。(2)機(jī)器人搜索引擎:利用爬蟲程序?qū)σ蛱鼐W(wǎng)上的資源進(jìn)行獨(dú)立訪問,并利用索引器獲取的信息來繪制索引。根據(jù)用戶進(jìn)入索引庫的請求,使用索引器確定位置,然后向用戶顯示相應(yīng)的結(jié)果。這類服務(wù)是針對站點(diǎn)的全文本檢索。這類搜索引擎比目錄搜索引擎省去了手工操作,更新速度更快。另外,由于計(jì)算機(jī)能自動執(zhí)行請求,從請求接收到的信息量也會大大增加。但是同樣,返回信息的相關(guān)率將低于目錄式檢索,搜索用戶看到的信息時需要自行過濾。因?yàn)閮?yōu)勢大于劣勢,現(xiàn)在大多數(shù)流行的搜索引擎都采用這種方式例如谷歌(Google),百度(Baidu),搜狗(Sogou)等等。當(dāng)今互聯(lián)網(wǎng)上有許多搜索引擎,世界上最著名的是Google。如今中國已經(jīng)建立了許多搜索引擎,例如百度,360,搜狐,新浪等。其中,谷歌和百度在準(zhǔn)確,全面地查找信息方面做得最好。更具體地說,例如Google,它可以快速,準(zhǔn)確地查找信息。其最強(qiáng)的優(yōu)勢是:1.超大容量Web托管空間。據(jù)保守估計(jì),目前由Google托管的網(wǎng)頁總數(shù)已達(dá)到80億。2.及時的響應(yīng)速度。根據(jù)數(shù)據(jù),對Google的搜索通常不到0.3秒。如此出色的性能基于Google所使用的數(shù)百個高效率的技術(shù)服務(wù)器和分布式并行查詢系統(tǒng)。3.全面地反饋。據(jù)說,Google響應(yīng)的信息不僅集中在各種流行的大型網(wǎng)頁上,而且還關(guān)注了更特定的網(wǎng)頁上(即使是非常冷門的網(wǎng)頁),由于這個原因,使Google反饋的信息與用戶搜索查詢匹配,相關(guān),準(zhǔn)確。Google繼續(xù)針對所查詢出的結(jié)果來改進(jìn)頁面的優(yōu)先級和信息的排名機(jī)制,從而使Google成為最佳搜索引擎之一。2.2SQLServer數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫,為了便于用戶理解,將數(shù)據(jù)存儲為行和列,關(guān)系型數(shù)據(jù)庫這一系列的行和列被稱為表,由一組表組成了數(shù)據(jù)庫。使用者可藉由查詢來取得數(shù)據(jù)庫中的數(shù)據(jù),而查詢是一種執(zhí)行代碼,用于限定數(shù)據(jù)庫中的某些區(qū)域。關(guān)系模型可以簡單理解為二維表格模型,而一個關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的關(guān)系組成的一個數(shù)據(jù)組織。本次設(shè)計(jì),我采用的是SQLServer數(shù)據(jù)庫,主要使用的是SQLServer2019這款軟件,它的最大的優(yōu)勢在于:1)真正的C/S體系結(jié)構(gòu)2)擁有可視化圖形化的用戶界面,方便用戶對數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫的管理3)擁有編程接口工具,方便用戶在進(jìn)行軟件開發(fā)時使用4)有很好的伸縮性,可以跨平臺使用。5)比其他數(shù)據(jù)庫系統(tǒng)價格低廉但同樣擁有數(shù)據(jù)倉庫功能。它也存在的缺點(diǎn):開放性差,并行實(shí)施和共存模型不成熟,用戶連接多時性能會變差,存在使用風(fēng)險,只支持C/S模式2.3Tomcat服務(wù)器Tomcat是由Apache、Sun等公司共同研發(fā)的免費(fèi)開源的Web應(yīng)用服務(wù)器,支持Java的JSP技術(shù)規(guī)范和Servlet,是JavaWeb開發(fā)的首選。Tomcat有以下優(yōu)勢:免費(fèi)開源,Tomcat最大的優(yōu)勢,減少了開發(fā)和學(xué)習(xí)成本,適合輕量級開發(fā)和個人學(xué)習(xí)運(yùn)行高效,安裝方便,Tomcat體量小,占有資源少,安裝簡單,服務(wù)器重啟快速可以應(yīng)對一定程度的高并發(fā)可擴(kuò)展性強(qiáng)但是正因?yàn)門omcat較小的體量,使其在用戶訪問量激增時容易出現(xiàn)狀況,運(yùn)行vu穩(wěn)定,不適合大體量的生產(chǎn)環(huán)境。2.4章末小結(jié)本章主要是介紹本文所采用的各種軟件技術(shù),以及運(yùn)行環(huán)境,并介紹了這些技術(shù)的優(yōu)缺點(diǎn),及基本原理。3搜索引擎的基本原理3.1基本組成及其功能圖3-1基本組成如圖所示,搜索引擎程序可以分成幾個模塊:搜索器、索引器、檢索器和用戶界面等模塊;存儲器和存儲桶是用來存儲所檢索出的各種資源的。搜索引擎程序的組成結(jié)構(gòu)具體如下:
1)搜索器(Crawler)用于在互聯(lián)網(wǎng)中探索、尋找信息,最終的目的是為了把信息存儲在存儲單元中的。此程序,需要長時間運(yùn)轉(zhuǎn),以便能夠更快的收集更多新信息,這些信息有多種類型,包括
HTML格式、
XML格式、字處理文檔格式和多媒體信息等,此外搜索引擎還需要定期更新存儲器中的信息。表3-1搜索引擎程序的組成結(jié)構(gòu)表搜索器就是爬蟲程序,會進(jìn)行長時間持續(xù)地運(yùn)行,主要任務(wù)是從互聯(lián)網(wǎng)上搜集各種來源的的不同信息,然后再對其進(jìn)行壓縮處理,減少其占用空間,最后存到存儲庫里,方便日后的用戶的檢索。索引器從存儲庫中提取信息,再進(jìn)行識別與分析,之后對結(jié)果進(jìn)行分類,然后再建立索引,并進(jìn)行簡單的排序,把結(jié)果放在合適的硬件存儲單元中,也就是之前說的存儲桶中。檢索器當(dāng)用戶執(zhí)行搜索時,檢索器在存儲桶中,以對用戶請求的判斷為依據(jù)進(jìn)行查找,以匹配度,優(yōu)先級等指標(biāo)為依據(jù)將查詢出的結(jié)果進(jìn)行最終排序,再將處理后的最好結(jié)果呈現(xiàn)給用戶。用戶界面用戶與搜索程序進(jìn)行人機(jī)交互的可視化界面,既是用戶輸入查詢語句的窗口,也是向用戶展示查詢后的結(jié)果方便用戶查找的門戶?,F(xiàn)在,互聯(lián)網(wǎng)已經(jīng)平民化廣泛化,人們可以自由地發(fā)布信息,從而使互聯(lián)網(wǎng)上的信息被迅速地更新,只有對網(wǎng)絡(luò)上的信息進(jìn)行快速更新,才能避免用戶在搜索信息時出現(xiàn)卡死或連接無效。目前我們考慮的搜索信息策略有兩種:表3-2搜集信息的策略搜索器的實(shí)現(xiàn)通常采用分布式和并行計(jì)算技術(shù),以提高程序發(fā)現(xiàn)和更新信息的速度,從而滿足商業(yè)搜索引擎短時間內(nèi)上百萬的高并發(fā)量。2)索引器(Indexer)索引器,通過讀取收集到的信息,并對其進(jìn)行整理,將信息中的索引項(xiàng)生成索引表,也可將文檔表示為索引項(xiàng)。索引項(xiàng)又分為客觀索引項(xiàng)和內(nèi)容索引項(xiàng):表3-3索引項(xiàng)的分類要區(qū)分文檔的內(nèi)容,通常需要對單索引項(xiàng)賦予權(quán)值,因此可以使用單索引項(xiàng)進(jìn)行區(qū)分,也可以使用單索引項(xiàng)來確定查詢結(jié)果與查詢目標(biāo)的相關(guān)性。常用的方法主要有:統(tǒng)計(jì)方法,概率學(xué)方法和信息理論方法。詞組索引項(xiàng)的提取,通常會采用統(tǒng)計(jì)學(xué)的方法或概率學(xué)的方法,甚至語言學(xué)的方法。通常情況下,索引表采用由索引項(xiàng)來查找對應(yīng)文檔的內(nèi)容,這便是倒排表(InversionList)。自然地,索引表也會將索引項(xiàng)出現(xiàn)在文檔中的位置記錄在表中,以便計(jì)算索引項(xiàng)之間的關(guān)系,是相鄰還是相近。索引器有兩種算法:集中式和分布式,它們各有各的優(yōu)缺點(diǎn)。在搜索數(shù)據(jù)量巨大的情況下,為了跟上信息量快速增長的速度,必須采用一種優(yōu)秀的索引算法,就是即時索引(InstantIndexing)的方式,隨著索引者搜索數(shù)據(jù)的增加,性能的優(yōu)勢將顯現(xiàn)出來。但檢索質(zhì)量的參差,有時完全決定著搜索引擎的有效性。3)檢索器(Searcher)根據(jù)用戶的查詢請求,搜索索引庫,快速地檢索出需要的文檔,然后比較被查詢文檔與查詢請求之間的相關(guān)性。最后,根據(jù)檢索結(jié)果與查詢請求的相關(guān)性程度,對檢索結(jié)果進(jìn)行從高到低降序排序,并實(shí)現(xiàn)了用戶和搜索引擎之間的相關(guān)性反饋機(jī)制。目前檢索器的設(shè)計(jì),有四種相對成熟的模型:概率模型、集合理論模型、混合的模型、代數(shù)的模型。4)用戶界面(UserInterface)用戶界面也可稱為用戶接口,搜索引擎的目標(biāo)是讓使用者可以檢索資訊,因此用戶界面必須存在,以進(jìn)行人機(jī)交互,這樣才能真正體現(xiàn)搜索引擎的價值。通過用戶界面將用戶的查詢請求輸入搜索引擎,將用戶的查詢結(jié)果顯示出來,從而提供了一種較為先進(jìn)的用戶相關(guān)性反饋機(jī)制,更好地實(shí)現(xiàn)了搜索引擎提供的信息的準(zhǔn)確性和合理性。利用用戶界面,不僅可以方便用戶使用搜索引擎,而且可以使用戶更加高效及時地獲得信息。用戶輸入界面我們可以分為兩類,一種是簡單接口,另一種則是復(fù)雜接口。簡單接口:是最普通的交互界面之一,用戶只能輸入查詢信息,不能進(jìn)行更精確的查詢,也沒有反饋的功能;復(fù)雜接口:不僅可以為輸入查詢信息提供文本框,用戶還可以對查詢信息進(jìn)行限制,減少搜索空間,例如,使用邏輯運(yùn)算符,使用接近,相鄰關(guān)系,域名范圍(如.net,.
com),出現(xiàn)位置(如標(biāo)題,關(guān)鍵字,作者,時間),搜索文檔的字?jǐn)?shù),等等。而中國知網(wǎng)、萬方數(shù)據(jù)庫等,都可以提供上述限制,由于不同的公司采用不同的限制方式,會給用戶帶來一定的不便,目前也有一些公司和機(jī)構(gòu),正著手為查詢選擇制定一系列標(biāo)準(zhǔn)。3.2搜索引擎的詳細(xì)工作流程搜索引擎的內(nèi)部構(gòu)成和詳細(xì)的工作流程說明如下:圖3-2搜索引擎的內(nèi)部組成工作原理:當(dāng)我們在輸入框中輸入要搜索的內(nèi)容時,搜索引擎根據(jù)所輸入的內(nèi)容在數(shù)據(jù)庫中進(jìn)行查詢,首先在每個網(wǎng)頁的標(biāo)題信息中查詢關(guān)鍵詞,如果該關(guān)鍵詞存在,搜索引擎將匹配該關(guān)鍵詞;如果沒有,搜索引擎將自動過濾。簡言之,搜索引擎的基本工作原理就是對現(xiàn)有的大型數(shù)據(jù)庫中的信息資源進(jìn)行智能篩選,并將搜索結(jié)果有效地反饋給用戶。整個過程,所有的搜索引擎,比如百度,谷歌,搜狗,都會使用自己的算法根據(jù)一些指標(biāo)作出判斷,然后根據(jù)關(guān)聯(lián)度,從高到低排序。而且在制作網(wǎng)站過程中,需要我們展示網(wǎng)站的關(guān)鍵詞、完善超鏈接部分,開展外部鏈接,再結(jié)合一些SEO的技術(shù)。如果一個網(wǎng)站想要成功,需要通過一些合理的頁面布局,使用不同的SEO工具,執(zhí)行外部優(yōu)化方案,避免垃圾鏈接。通過提升搜索引擎的友好度,來增加網(wǎng)站的流量,最終實(shí)現(xiàn)網(wǎng)站增收。一般情況下,我們會使用多種指令來查看某個網(wǎng)站的瀏覽人數(shù),但指令對各種搜索引擎的支持度不盡相同,并不能完全適用于所有的搜索引擎。通常,我們可以通過訪問網(wǎng)站來了解網(wǎng)站的訪問人數(shù)。3.3章末小結(jié)本章主要介紹搜索引擎的基本結(jié)構(gòu)如搜索器,索引器,檢索器等并介紹這些結(jié)構(gòu)的功能和工作原理,并完整介紹了搜索引擎的工作流程以及再我們?nèi)粘I钪械捏w現(xiàn)。4系統(tǒng)分析與設(shè)計(jì)4.1系統(tǒng)分析經(jīng)過對搜索引擎的研究同時和對Lucene學(xué)習(xí),決定將搜索引擎和Lucene相結(jié)合,得出本次設(shè)計(jì)所需要實(shí)現(xiàn)的功能如下:1)支持txt、doc、xls和ppt等文件格式的桌面搜索;2)支持分詞檢索3)支持全文搜索4)能夠高亮顯示所搜索關(guān)鍵字或語句5)可以顯示查詢用時6)顯示搜索歷史并過濾關(guān)鍵字7)通過使用
Lucene本身自帶的庫以及相關(guān)算法,可以實(shí)現(xiàn)分詞查詢和全文搜索兩種功能,我們需要使用
Highlighter并通過數(shù)據(jù)庫持久性保存數(shù)據(jù),以解決關(guān)鍵字高亮的問題。4.2系統(tǒng)概要設(shè)計(jì)根據(jù)項(xiàng)目的需求,我對搜索引擎的初步設(shè)計(jì)如下圖所示:圖4-1系統(tǒng)總體架構(gòu)4.2系統(tǒng)實(shí)現(xiàn)目標(biāo)希望設(shè)計(jì)一個能用于海量信息快速搜索的個性化引擎,它需要實(shí)現(xiàn)快速、便捷和精確等搜索引擎的基本要求,并且具有顯示搜索耗時,提供關(guān)鍵字高亮度顯示等等的個性化效果。同時希望次引擎不需要高配置的硬件資源以及復(fù)雜的環(huán)境配置或搭建就可以流暢的運(yùn)行,幸好Lucene庫可以幫助我們完成這些功能和要求。4.3數(shù)據(jù)庫表通過爬蟲爬取的網(wǎng)頁信息將被存儲再content表中,id為表格的無意義主鍵,Title為網(wǎng)站Title標(biāo)簽里的字符串,content為網(wǎng)站的全文關(guān)鍵字,Link為網(wǎng)站的url鏈接。表的字段格式下表4-2所示:表4-2content表字段名類型大小比例非空主鍵Idint是是Titlenvarchar50contentnvarchar1000Linkvarchar500用戶的搜索歷史被儲存再search_his表中,ID為表格的無意義主鍵,KeyWord為搜索的歷史關(guān)鍵字,SearchTime為搜索的時間表4-3search_his字段名類型大小比例非空主鍵IDint是是KeyWordnvarchar20SearchTimedatetime是表4-3tb_Filter字段名類型大小比例非空主鍵IDint是是KeyWordnvarchar20管理員的登錄信息存儲再Users表中,ID為表格的無意義主鍵,LoginID為登錄賬號,Pwd為密碼。表4-5Users字段名類型大小比例非空主鍵IDint是是LoginIDvarchar50Pwdvarchar504.4章末小結(jié)本章主要對整個系統(tǒng)進(jìn)行分析,說明此系統(tǒng)的設(shè)計(jì)目標(biāo),并展示了數(shù)據(jù)庫表的設(shè)計(jì),各個表的功能以及表中字段的意義5系統(tǒng)詳細(xì)實(shí)現(xiàn)5.1實(shí)現(xiàn)環(huán)境配置由于我的搜索引擎使用了Lucene框架,因此需要使用Lucene的一些jar包,以便使用Lucene實(shí)現(xiàn)搜索引擎的搜索功能。同樣的想要實(shí)現(xiàn)分詞功能,我們還需要引用分詞組件的相關(guān)類庫,具體的引用類庫如圖5-1所示:圖5-1Lucene配置5.2功能實(shí)現(xiàn)5.2.1建立索引Lucene對數(shù)據(jù)的檢索是在索引文件中進(jìn)行的,也許有人會問,為什么不直接檢索數(shù)據(jù)呢?一是數(shù)據(jù)庫檢索要實(shí)現(xiàn)全文檢索,實(shí)現(xiàn)分詞比較困難,另外,如果數(shù)據(jù)量小到幾百甚至上千的話,還是可以考慮使用數(shù)據(jù)庫檢索。從數(shù)據(jù)庫中讀取數(shù)據(jù),當(dāng)將數(shù)據(jù)寫到索引文件中時,只寫到一條記錄。因?yàn)長ucene只能為文本類型的數(shù)據(jù)創(chuàng)建索引,因此,為了對其他類型的數(shù)據(jù)進(jìn)行檢索,必須將其他格式的數(shù)據(jù)替換為文本類型,以便能夠進(jìn)行索引、搜索。當(dāng)HTML文檔需要被索引時,您首先需要使用文本格式來替換HTML文檔,然后將轉(zhuǎn)換的結(jié)果輸入Lucene進(jìn)行索引和檢索,然后創(chuàng)建一個索引文件,我們需要將其保存到內(nèi)存中,最后通過判斷用戶在UI界面輸入的查詢請求,來從已建立的索引文件中查找。實(shí)現(xiàn)代碼如下:/***創(chuàng)建索引*@paramrs*@throwsException*/privatevoidcreateIndex(ResultSetrs)throwsException{Directorydirectory=null;IndexWriterindexWriter=null;try{indexFile=newFile(searchDir);if(!indexFile.exists()){indexFile.mkdir();}directory=FSDirectory.open(indexFile);analyzer=newIKAnalyzer();indexWriter=newIndexWriter(directory,analyzer,true,IndexWriter.MaxFieldLength.UNLIMITED);indexWriter.setMaxBufferedDocs(maxBufferedDocs);Documentdoc=null;while(rs.next()){doc=newDocument();Fieldid=newField("id",String.valueOf(rs.getInt("id")),Field.Store.YES,Field.Index.NOT_ANALYZED,TermVector.NO);//Fieldtitle=newField("title",rs.getString("title")==null?"":rs.getString("title"),Field.Store.YES,Field.Index.ANALYZED,TermVector.NO);Fieldcontent=newField("content",rs.getString("content")==null?"":rs.getString("content"),Field.Store.YES,Field.Index.ANALYZED,TermVector.NO);doc.add(id);doc.add(content);indexWriter.addDocument(doc);}indexWriter.optimize();indexWriter.close();}catch(Exceptione){e.printStackTrace();}}5.2.2文件搜索實(shí)現(xiàn)首先在系統(tǒng)中搜索文件,接著將需要搜索的文件放在該文件夾下,然后輸入關(guān)鍵字進(jìn)行搜索,系統(tǒng)目前支持搜索的文件格式包括.txt、.doc、.xls和.ppt。必須先建立索引,然后才能進(jìn)行文件搜索,索引建立時,性能會受到最大影響,當(dāng)索引被寫入文件時,因此,在具體應(yīng)用時,需要對其進(jìn)行控制.當(dāng)我們讀取文件夾下面的文件時,我們是通過FileInputStream對象進(jìn)行讀取的,該對象只需要一個參數(shù)就可以了,這個參數(shù)是文件的存儲路徑,如果我們使用FileInputStream來讀取文件,我們還需要通過利用BufferedReader對象,將文件轉(zhuǎn)換為Buffered的格式保存,最后通過IndexSearcher對象進(jìn)行文件搜索。實(shí)現(xiàn)代碼:IndexWriteriwriter=newIndexWriter(directory,analyzer,true, IndexWriter.MaxFieldLength.LIMITED); iwriter.setMaxFieldLength(25000); //Lucene只能對Document文件建立索引,Document只是一個虛擬的文件 while((a=br.readLine())!=null){ Documentdoc=newDocument(); doc.add(newField(fieldName,a,Field.Store.YES, Field.Index.ANALYZED)); iwriter.addDocument(doc); } //Field.Store.YES:為該Field值創(chuàng)建索引 //Field.Index.TOKENIZED:索引Field的值,使它能夠被查詢 //Field對象是用來描述一個文檔的某個屬性的 iwriter.close(); //索引對象 IndexSearcherisearcher=newIndexSearcher(directory,true); QueryParserparser=newQueryParser(Version.LUCENE_29,fieldName,analyzer); 圖5-2文件搜索效果圖5.2.3數(shù)據(jù)庫的連接配置相關(guān)代碼:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url= "jdbc:sqlserver://localhost:1433; DatabaseName=LuceneDB2"; Stringusername="sa"; Stringpassword="123"; con=DriverManager.getConnection(url,username,password);5.2.4數(shù)據(jù)庫搜索實(shí)現(xiàn)該模塊解決了數(shù)據(jù)庫快速搜索的問題,這實(shí)際上和文件搜索的原理是相同的,第一步都是要建立索引,當(dāng)文檔索引建立好后,就可以執(zhí)行搜索任務(wù)了。相關(guān)代碼://執(zhí)行sql語句增刪改 publicintupdateExecute(Stringsql){ intresult=0; try{ Connectioncon=getConnection(); Statementsta=con.createStatement(); result=sta.executeUpdate(sql); }catch(SQLExceptione){ e.printStackTrace(); } returnresult; } //執(zhí)行sql查詢語句返回ResultSet類型 publicResultSetqueryExectue(Stringsql){ ResultSetrs=null; try{ Connectioncon=getConnection(); Statementsta=con.createStatement(); rs=sta.executeQuery(sql); }catch(SQLExceptione){ e.printStackTrace(); } returnrs; } publicStringexecuteScalar(Stringsql){ ResultSetrs=queryExectue(sql); Strings=""; try{ while(rs.next()){ s=rs.getString(1); } }catch(SQLExceptione){ e.printStackTrace(); } returns; }此時,對前端頁面的用戶提交一個關(guān)鍵字的查詢請求,然后該請求將被自動分析處理。最后,系統(tǒng)將用戶的查詢指令傳送到后臺,并返回檢索到的信息資源,前臺一般為顯示器,將檢索到的信息進(jìn)行顯示:圖5-3檢索結(jié)果顯示圖5.2.5后臺數(shù)據(jù)編輯實(shí)現(xiàn)管理人員可以點(diǎn)擊網(wǎng)頁上的“登錄”鏈接到管理人員登錄頁面,用戶在登錄頁面中輸入帳號和密碼即可登錄系統(tǒng),登錄后用戶可以看到當(dāng)前系統(tǒng)的所有數(shù)據(jù),還可以修改或刪除任何數(shù)據(jù),可以通過標(biāo)題搜索自己想看的數(shù)據(jù),還可以通過添加按鈕添加新數(shù)據(jù):圖5-4后臺登錄界面5.3章末小結(jié)本章主要介紹編譯環(huán)境的搭建以及索引的建立,本地文件搜索的實(shí)現(xiàn)方法,JDBC和登錄界面等關(guān)鍵代碼6系統(tǒng)測試6.1測試重要性這個項(xiàng)目是在本地服務(wù)器上運(yùn)行和調(diào)試的,首先是Java環(huán)境的安裝和配置,以及數(shù)據(jù)庫環(huán)境的安裝和配置,安裝完成后將文件導(dǎo)入根目錄,然后才能在瀏覽器上運(yùn)行和測試。因此,測試在軟件開發(fā)過程中扮演著非常重要的角色,它的影響不亞于任何開發(fā)的環(huán)節(jié),因?yàn)檐浖_發(fā)是一項(xiàng)龐大的工程,不僅耗費(fèi)時間,而且開發(fā)人員不可能預(yù)見到所有可能發(fā)生的情況,這樣就會導(dǎo)致在每個階段都不可避免地產(chǎn)生一系列的錯誤,而測試人員的主要職責(zé)就是,檢查和發(fā)現(xiàn)程序在運(yùn)行的過程中的錯誤;一個優(yōu)秀的測試用例,可以很大程度上證明這個測試用例能夠很好地發(fā)現(xiàn)系統(tǒng)中目前沒有察覺到的錯誤;并且能夠發(fā)現(xiàn)現(xiàn)在沒有察覺到的錯誤,這就是成功測試的標(biāo)準(zhǔn)。本系統(tǒng)的測試和糾錯信息流程如下圖6.1所示。測試數(shù)據(jù)測試數(shù)據(jù)程序期望結(jié)果測試結(jié)果錯誤信息改正信息糾錯評價測試圖6-1測試和糾錯信息流程圖軟件測試,又稱為多模塊測試,一共有四個階段:表6-1測試階段的介紹表單元測試單元測試的用例從單元詳細(xì)設(shè)計(jì)中導(dǎo)出。功能性測試與結(jié)構(gòu)性測試可用于單元測試。集
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)灌溉水電設(shè)施管理與維護(hù)規(guī)定
- 焊接作業(yè)環(huán)境適應(yīng)性分析與改善策略
- 高一化學(xué)教案:專題第二單元第一課時乙醇
- 2024屆南安市中考化學(xué)對點(diǎn)突破模擬試卷含解析
- 2024高中化學(xué)第五章進(jìn)入合成有機(jī)高分子化合物的時代3功能高分子材料課時作業(yè)含解析新人教版選修5
- 2024高中地理課時作業(yè)6流域的綜合開發(fā)-以美國田納西河流域?yàn)槔馕鲂氯私贪姹匦?
- 2024高中語文開學(xué)第一課學(xué)生觀后感范文700字少年強(qiáng)中國強(qiáng)素材
- 2024高中語文第二單元置身詩境緣景明情賞析示例春江花月夜學(xué)案新人教版選修中國古代詩歌散文欣賞
- 2024高中語文精讀課文一第1課3侍奉皇帝與走向人民作業(yè)含解析新人教版選修中外傳記蚜
- 2024高考化學(xué)一輪復(fù)習(xí)第十章化學(xué)實(shí)驗(yàn)基礎(chǔ)第一講化學(xué)實(shí)驗(yàn)常用儀器和基本操作規(guī)范演練含解析新人教版
- 過盈配合壓裝力計(jì)算
- 中國的世界遺產(chǎn)智慧樹知到答案章節(jié)測試2023年遼寧科技大學(xué)
- 急性腹瀉與慢性腹瀉修改版
- 先天性肌性斜頸的康復(fù)
- GB/T 37518-2019代理報關(guān)服務(wù)規(guī)范
- GB/T 34370.1-2017游樂設(shè)施無損檢測第1部分:總則
- GB/T 15924-1995錫礦石化學(xué)分析方法碘量法測定錫量
- GB/T 13914-2013沖壓件尺寸公差
- 貝利尤單抗Belimumab詳細(xì)說明書與重點(diǎn)
- BB/T 0045-2021紙漿模塑制品工業(yè)品包裝
- PPT溝通的藝術(shù)課件
評論
0/150
提交評論