站內(nèi)全文搜索引擎的設(shè)計與實現(xiàn)_第1頁
站內(nèi)全文搜索引擎的設(shè)計與實現(xiàn)_第2頁
站內(nèi)全文搜索引擎的設(shè)計與實現(xiàn)_第3頁
站內(nèi)全文搜索引擎的設(shè)計與實現(xiàn)_第4頁
站內(nèi)全文搜索引擎的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢 業(yè) 論 文(設(shè) 計)論文(設(shè)計)題目:站內(nèi)全文搜索引擎的設(shè)計與實現(xiàn)目 錄摘 要1ABSTRACT2第1章 緒論31.1 課題的研究背景與意義31.2 研究現(xiàn)狀41.3 本文的工作4第2章 站內(nèi)搜索引擎相關(guān)技術(shù)介紹62.1 全文檢索技術(shù)62.2 .NET相關(guān)技術(shù)72.2.1 .NET平臺72.2.2 Visual Studio2012開發(fā)平臺72.3 Lucene.NET介紹8第3章 站內(nèi)搜索引擎的設(shè)計與實現(xiàn)93.1 站內(nèi)搜索引擎功能需求93.2 站內(nèi)搜索引擎總體設(shè)計及數(shù)據(jù)庫設(shè)計10第4章 站內(nèi)搜索引擎關(guān)鍵代碼實現(xiàn)114.1 主界面11第5章 總結(jié)與展望14參考文獻15摘 要淘寶的出現(xiàn),電子

2、商務(wù)井噴式的發(fā)展,以及越來越多的社交網(wǎng)站、團購網(wǎng)站、專門類信息網(wǎng)站的出現(xiàn),海量的數(shù)據(jù)蘊含在網(wǎng)站之內(nèi)。巨大的信息量無疑是把雙刃劍,在給用戶提供豐富信息的同時,也給用戶提了一個大大的難題,如何在這海量信息中找到用戶想得到的信息,尤其是當用戶提供的是一組信息不是十分明確的詞組時,如何能講有用的信息條理清晰地提供給用戶,這進一步刺激了站內(nèi)搜索技術(shù)的發(fā)展。本文在總結(jié)站內(nèi)搜索功能的同時,在研究了站內(nèi)搜索相關(guān)技術(shù)的基礎(chǔ)上,設(shè)計并實現(xiàn)了一個簡易的站內(nèi)搜索引擎,實現(xiàn)了在內(nèi)搜索的主要功能。關(guān)鍵詞:站內(nèi)搜索;.NET;Lucene.NETABSTRACTThe Taobao emergence of e-comme

3、rce development spurt, as well as a growing number of social networking sites, group buying sites, the emergence of specialized class information website contains vast amounts of data within the website. A huge amount of information is undoubtedly double-edged sword, giving users a wealth of informa

4、tion, but also to provide the user a big problem, how to find a user wants information in this mass of information, especially when the user is offered a when information is not very clear set of phrases, how can speak clarity of useful information available to users, which further stimulated the de

5、velopment of the station search technology.This paper summarizes the station search function at the same time, in the study of the station search related technologies, based on the design and implementation of a simple site search engine, including the realization of the main functions of the search

6、.Key words: Site Search; .NET; Lucene.NET16第1章 緒論自從有了計算機以后,人類開始用計算機保存信息,有保存就需要查找,于是出現(xiàn)了檢索技術(shù)。文本檢索技術(shù)的發(fā)展從最初的SMART文檔檢索系統(tǒng)到AltaVista搜索引擎,到現(xiàn)在的搜索巨頭Google,人們習慣在互聯(lián)網(wǎng)上搜索需要的信息1。同時在同一個網(wǎng)站內(nèi)往往擁有大量的資源,怎樣在網(wǎng)站內(nèi)部使用戶能夠迅速的找到所需信息,已成為一個網(wǎng)站能夠吸引用戶的重要方面。隨著信息地快速增長,這一方面的需求越來越大,在很大程度上嚴重影響到 Web 站點的成功2。因此,建立站內(nèi)搜索引擎成為必要。所謂站內(nèi)搜索無非就是對數(shù)據(jù)庫信息

7、的檢索,當然,數(shù)據(jù)庫通過SQL查詢也在一定程度上提供了這樣的功能。但是,數(shù)據(jù)庫所提供的Like%key-word%查詢,不但效率不高,尤其是在多字段查詢時,而且所提供的僅僅是關(guān)鍵字的全信息匹配,所查詢到的內(nèi)容必須是“key-word”的順序匹配,這對于大多數(shù)網(wǎng)站,尤其是大型網(wǎng)站來說,基于數(shù)據(jù)庫查詢的站內(nèi)搜索往往出現(xiàn)檢索數(shù)據(jù)不準確、更新慢、無法控制檢索等問題3。那么,如何來解決這個問題呢?搜索引擎的出現(xiàn)給了人們帶來了一線希望。諸如Google、Baidu等全文搜索引擎能夠提供一種基于全文信息的搜索方式,并且能夠在所提供的一個或一組詞中分離出具有一定含義的詞,并以這些詞為關(guān)鍵字搜索并得到包含這些關(guān)

8、鍵字的信息4。然而,我們無法做到在自己的網(wǎng)站中做出一個如Baidu、Google那樣的搜索引擎。但是,Lucene的出現(xiàn),使這種實現(xiàn)成為可能,它是一個開放源代碼的全文檢索引擎工具包,利用 Lucene 建立的全文檢索系統(tǒng)可以通過其豐富的分析技術(shù)達到令人滿意的檢索效果5。1.1 課題的研究背景與意義在以往網(wǎng)站建設(shè)、企業(yè)信息系統(tǒng)搭建過程中,由于信息結(jié)構(gòu)簡單、內(nèi)容稀缺,站內(nèi)搜索乃至搜索都不是網(wǎng)站系統(tǒng)的必要裝備。但隨著Web2.0帶來的海量信息井噴式涌現(xiàn),企業(yè)自身對信息架構(gòu)、管理、發(fā)布的需求,以及用戶對信息的組織、查詢、可尋性的要求越來越高,于是站內(nèi)搜索出現(xiàn)了。淘寶的出現(xiàn),電子商務(wù)井噴式的發(fā)展,以及越

9、來越多的社交網(wǎng)站、團購網(wǎng)站、專門類信息網(wǎng)站的出現(xiàn),海量的數(shù)據(jù)蘊含在網(wǎng)站之內(nèi)。巨大的信息量無疑是把雙刃劍,在給用戶提供豐富信息的同時,也給用戶提了一個大大的難題,如何在這海量信息中找到用戶想得到的信息,尤其是當用戶提供的是一組信息不是十分明確的詞組時,如何能講有用的信息條理清晰地提供給用戶,這進一步刺激了站內(nèi)搜索技術(shù)的發(fā)展6。站內(nèi)搜索通俗來講是一個網(wǎng)站或商城的“大門口”,一般在形式上包括兩個要件:搜索入口和搜索結(jié)果頁面,但在其后臺架構(gòu)上是比較復雜的,其核心要件包括:中文分詞技術(shù)、頁面抓取技術(shù)、建立索引、對搜索結(jié)果排序以及對搜索關(guān)鍵詞的統(tǒng)計、分析、關(guān)聯(lián)、推薦等7。1.2研究現(xiàn)狀站內(nèi)搜索主要提供的是

10、全文搜索功能,常用的檢索技術(shù)分為如下兩種:(1)使用關(guān)系數(shù)據(jù)庫的 like %keyword%查詢來代替全文檢索系統(tǒng)。這種方法在信息量比較小的情況下,檢索速度比較快,但是由于查詢語句比較繁瑣,在面對海量信息的情況下,檢索速度會急劇降低,其性能也往往達不到要求,甚至影響數(shù)據(jù)庫的其他正常使用,尤其是在網(wǎng)絡(luò)狀態(tài)下,這方面的缺陷尤為明顯8。(2)使用通用的數(shù)據(jù)庫系統(tǒng)提供的全文檢索功能。一些信息化平臺雖稱實現(xiàn)了全文索引庫,但其實質(zhì)是模擬的全文索引庫,其通過先檢索放在關(guān)系數(shù)據(jù)庫里的結(jié)構(gòu)化數(shù)據(jù),如題目、摘要、內(nèi)容等,然后鏈接全文以獲得全文,而真正實現(xiàn)全文檢索的不多,而且在數(shù)據(jù)量比較大,特別是在海量數(shù)據(jù)的情況

11、下,檢索的效率仍然比較低9。1.3 本文的工作本論文在研究了全文搜索相關(guān)文獻的基礎(chǔ)上,分析了Lucene.NET框架,基于.NET平臺,實現(xiàn)了一個簡單的站內(nèi)搜索引擎,主要研究內(nèi)容包括10:(1) 全文檢索知識的研究。包括全文檢索的基本原理和相關(guān)理論;(2) .NET平臺相關(guān)技術(shù)的研究。包括,.NET Framework介紹,Visual Studio開發(fā)環(huán)境介紹;(3) 分詞框架研究。包括Lucene介紹及工作原理。(4)設(shè)計并實現(xiàn)一個簡單的站內(nèi)搜索引擎。第2章 站內(nèi)搜索引擎相關(guān)技術(shù)介紹2.1 全文檢索技術(shù)所謂全文檢索,是一種將文件中所有文本與檢索項匹配的文字資料檢索方法。全文檢索系統(tǒng)是按照全

12、文檢索理論建立起來的用于提供全文檢索服務(wù)的軟件系統(tǒng)11。全文檢索能夠?qū)⒋鎯τ跀?shù)據(jù)庫中整本書、整篇文章中的任意內(nèi)容信息查找出來的檢索。它可以根據(jù)需要獲得全文中有關(guān)章、節(jié)、段、句、詞等信息,也就是說類似于給整本書的每個字詞添加一個標簽,也可以進行各種統(tǒng)計和分析。例如,它可以很快的回答“水滸傳一書中“宋江”一共出現(xiàn)多少次?”的問題。全文搜索技術(shù)是指計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當用戶查詢時,搜索程序就根據(jù)事先建立的索引進行查找,并將查找的結(jié)果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。檢索主要分為按字檢索和按

13、詞搜索兩種。按字檢索是指對于文章中的每一個字都建立索引,檢索時將詞分解為字的組合。對于各種不同的語言而言,字有不同的含義,比如英文中字與詞實際上是合一的,而中文中字與詞有很大分別。按詞搜索指對文章中的詞,即語義單位建立索引,檢索時按詞搜索,并且可以處理同義項等。英文等西方文字由于按照空白切分詞,因此實現(xiàn)上與按字處理類似,添加同義處理也很容易。中文等東方文字則需要切分字詞,以達到按詞索引的目的,關(guān)于這方面的問題,是當前全文搜索技術(shù)尤其是中文全文檢索技術(shù)中的難點。 全文搜索系統(tǒng)是按照全文檢索理論建立起來的用于提供全文檢索服務(wù)的全文搜索系統(tǒng)。一般來說,全文搜索需要具備建立索引和提供查詢的基本功能,此

14、外現(xiàn)代的全文搜索系統(tǒng)還需要具有方便的用戶接口、面向WWW的開發(fā)接口、二次應(yīng)用開發(fā)接口等等。功能上,全文搜索系統(tǒng),核心具有建立索引、處理查詢返回增加索引、優(yōu)化索引結(jié)構(gòu)等等功能,外圍則由各種不同應(yīng)用具有的功能組成。結(jié)構(gòu)上,全文搜索系統(tǒng)核心具有索引引擎、查詢引擎、文本分析引擎、對外接口等等,加上各種外圍應(yīng)用系統(tǒng)等等共同構(gòu)成了全文檢索系統(tǒng)12。2.2 .NET相關(guān)技術(shù)2.2.1 .NET平臺.NET框架是一種新的計算平臺,它簡化了在高度分布式Internet環(huán)境中的應(yīng)用程序開發(fā)13。Microsoft .NET Framework結(jié)合強大的功能與跨技術(shù)邊界無縫通信新技術(shù),構(gòu)建一個能支持各種業(yè)務(wù)流程的應(yīng)

15、用程序。.NET 框架4.5可以更方便地編寫異步代碼、同步代碼中的控制流混合,它提供了更高的性能、可靠性和安全性。它為軟件向多樣化的移動組件發(fā)展的情況也提供了保護。在一個改進的、可擴展的策略下,用戶能夠運行功能強大的代碼,而同時降低相關(guān)的風險。.NET平臺使人們能夠通過簡單的方式在其上構(gòu)建各種應(yīng)用方式,多樣化地從網(wǎng)站獲取信息,并解決網(wǎng)站之間的協(xié)同工作。.NET Framework 4.5 提供了托管執(zhí)行環(huán)境、簡化的開發(fā)和部署以及與各種編程語言的集成,如圖1所示。圖1 .NET Framework2.2.2 Visual Studio2012開發(fā)平臺Microsoft Visual Studio

16、(簡稱VS)是美國微軟公司的開發(fā)工具包系列產(chǎn)品。Visual Studio是一個基本完整的開發(fā)工具集,它包括了整個軟件生命周期中所需要的大部分工具,是目前最流行的Windows平臺應(yīng)用程序的集成開發(fā)環(huán)境?,F(xiàn)在較新的版本是2012版本14。Visual Studio 2012作為一個集成解決方案,適用于無論是個人或者各種規(guī)模的開發(fā)團隊。Visual Studio2012實現(xiàn)了同事間的無縫協(xié)作,提高了生產(chǎn)效率與專注度,最終好的點子變成了優(yōu)秀的現(xiàn)實應(yīng)用。2.3 Lucene.NET介紹Lucene.NET是Lucene的.NET版本,被應(yīng)用于.NET平臺上。Lucene是一套用于全文檢索和搜尋的開源

17、程式庫,由Apache軟件基金會支持和提供。Lucene提供了一個簡單卻強大的應(yīng)用程式接口,能夠做全文索引和搜尋。在Java開發(fā)環(huán)境里Lucene是一個成熟的免費開源工具。就其本身而言,Lucene是當前以及最近幾年最受歡迎的免費Java資訊檢索程式庫。人們經(jīng)常提到資訊檢索程式庫,雖然與搜索引擎有關(guān),但不應(yīng)該將資訊檢索程式庫與搜索引擎相混淆15。作為一個開放源代碼項目,Lucene從問世之后,引發(fā)了開放源代碼社群的巨大反響,程序員們不僅使用它構(gòu)建具體的全文檢索應(yīng)用,而且將之集成到各種系統(tǒng)軟件中去,以及構(gòu)建Web應(yīng)用,甚至某些商業(yè)軟件也采用了Lucene作為其內(nèi)部全文檢索子系統(tǒng)的核心。Lucen

18、e以其開放源代碼的特性、優(yōu)異的索引結(jié)構(gòu)、良好的系統(tǒng)架構(gòu)獲得了越來越多的應(yīng)用。第3章 站內(nèi)搜索引擎的設(shè)計與實現(xiàn)3.1 站內(nèi)搜索引擎功能需求站內(nèi)搜索是提供網(wǎng)站內(nèi)部內(nèi)容的檢索和搜索功能。隨著網(wǎng)站內(nèi)容的增長,站內(nèi)結(jié)構(gòu)也越來越復雜,用戶很難準確瀏覽全部內(nèi)容,查找所需信息也越來越難。站內(nèi)檢索的需求也逐漸顯露出來。一個好的站內(nèi)搜索引擎主要包含如下功能:l 搜索提示功能,用戶輸入關(guān)鍵字 ,自動出現(xiàn)下拉框顯示相關(guān)搜素關(guān)鍵詞,這個功能大家都很熟悉了,比如百度淘寶都在用;實用性很強,的確為用戶提供了很多方便;其實這個功能還有其他的作用,就是引導用,避免了原來用戶隨意輸入不太符合規(guī)則的關(guān)鍵字,導致搜搜無結(jié)果的尷尬。尤

19、其對產(chǎn)品銷售型的網(wǎng)站,友好的提示,讓客戶最快找到他要的東西。l 用戶搜素記錄,用戶在搜索的時候,做一下記錄處理,記錄一下用戶輸入的關(guān)鍵字。做搜索數(shù)量統(tǒng)計,發(fā)覺自己網(wǎng)站用戶的搜索傾向,配合高搜索率的關(guān)鍵字做一些促銷及專題,滿足用戶的胃口。從這個功能的延伸,就是盡可能的獲取用戶的詳細信息,這個可以配合網(wǎng)站會員功能,具體實現(xiàn)起來:當用戶以登陸方式搜索時候,記錄搜索的關(guān)鍵字及用戶會員ID 。這樣就獲得了用戶信息,便可通過郵件等方式將其感興趣的內(nèi)容傳達給他。l 搜索熱門關(guān)鍵字,能讓用戶點的不讓用戶區(qū)輸入,這就是人性化,搜索框下最好有經(jīng)常被檢索的關(guān)鍵字,這個關(guān)鍵字可以用上述第2點獲取。而且對于銷售型的網(wǎng)站

20、不同時期都要及時的更新。l 搜索結(jié)果頁面,搜索出來后的結(jié)果頁面也是不可忽視的,經(jīng)??刺詫毜挠脩糁溃阉鹘Y(jié)果頁面上方會有產(chǎn)品所屬的分類,所屬的型號,品牌、其實還可以加入一排相關(guān)搜索關(guān)鍵字,類似百度下方的相關(guān)搜索??傊徊讲降淖層脩舾鶕?jù)自己的需求找到相應(yīng)的產(chǎn)品,便捷從細節(jié)開始。l 方便用戶查找網(wǎng)站信息。我們經(jīng)常會發(fā)生這樣的事情:明明記得有一篇寫關(guān)于寶馬試駕的 的文件,就是想不起存放在什么地方了。訪問者也有類似困擾,只記得某個網(wǎng)站上說了關(guān)于某一事件的新聞,但不知道具體的鏈接在哪里。另外,要是隱藏在目錄很深的html文檔可能自從網(wǎng)站建立到整個網(wǎng)站關(guān)閉也沒有一個人看過,這些都不是我們所想要的。站內(nèi)檢索

21、毫無疑問可以解決上述問題。同時,按照一個主題把所有相關(guān)文檔提供給訪問者,可以讓訪問者更全面的了解他所想要的東西,這增加了網(wǎng)站信息間的組織性和邏輯性,方便了訪問者的使用,提升用戶體驗度。3.2 站內(nèi)搜索引擎總體設(shè)計及數(shù)據(jù)庫設(shè)計本系統(tǒng)為實現(xiàn)一個簡易的站內(nèi)搜索引擎,可以嵌入到其他實用網(wǎng)站之中。因此在設(shè)計上以簡潔為主,總體設(shè)計如圖2。站內(nèi)搜索引擎檢索入口檢索引擎數(shù)據(jù)庫圖2 站內(nèi)搜索總體設(shè)計用戶通過輸入接口界面輸入想查詢的一個或若干個詞到檢索引擎,檢索引擎與數(shù)據(jù)庫通信,根據(jù)關(guān)鍵字查詢數(shù)據(jù)庫中相匹配的信息,在返回給用戶界面,并在返回信息中高亮出用戶所檢索的信息。為了模擬檢索過程和內(nèi)容,在數(shù)據(jù)庫中創(chuàng)建了一個

22、簡單的數(shù)據(jù)表Article,如表1。字段名數(shù)據(jù)類型是否允許為空說明IDINT否編號,關(guān)鍵字TitleNVARCHAR (50)否信息標題ContentVARCHAR (MAX) 否信息內(nèi)容表1 Article表第4章 站內(nèi)搜索引擎關(guān)鍵代碼實現(xiàn)4.1 主界面圖3 主界面(搜索前)圖4 主界面(搜索后)主要代碼: protected List keywords = new List(); protected void btnSearch_Click(object sender, EventArgs e) string keywords = tbKeyWords.Text.Split(new str

23、ing , StringSplitOptions.RemoveEmptyEntries); if (keywords.Length = 0) lbAlert.Text = 請輸入關(guān)鍵字:.; return; this.keywords = keywords.ToList(); DataAccess dataAccess = new DataAccess(); List list = dataAccess.Search(this.keywords); ShowResult(list); long id = 0; if (!IsPostBack & !string.IsNullOrEmpty(Re

24、quest.QueryStringid) & long.TryParse(Request.QueryStringid, out id) DataAccess dataAccess = new DataAccess(); Data = dataAccess.GetArticle(id); if (Data = null) Data = new Article(); 用于高亮關(guān)鍵字的代碼: function HightLightKeywords() var container = document.getElementById(result); var keywords = new Array()

25、; % for (int i = 0; i for (var i = 0; i keywords.length; i+) var a = new RegExp(keywordsi, igm); container.innerHTML = container.innerHTML.replace(a, + keywordsi + ); HightLightKeywords();第5章 總結(jié)與展望本設(shè)計實現(xiàn)了一個簡易的站內(nèi)搜索引擎,通過該設(shè)計的制作,使我對專業(yè)所學有了進一步的認識,在增強實際操作能力的同時,也對相關(guān)理論知識的關(guān)聯(lián)性有了更深的了解,更重要的是在這一過程中又學到了很多新的知識。系統(tǒng)在經(jīng)過

26、測試,在運行過程中,能夠達到預期的基本目標,得到較好的效果。當然,鑒于能力和時間所限,還有諸如自動完成、關(guān)鍵字統(tǒng)計等功能還沒有完成,這都是以后需要加強的方向。參考文獻1陳立全文檢索引擎的設(shè)計研究J現(xiàn)代情報,2007(10):56582蔡建超,郭一平,王亮基于Lucene.Net校園網(wǎng)搜索引擎的設(shè)計與實現(xiàn)J計算機技術(shù)與發(fā)展,2006(11):80823張校乾,金玉玲,侯玉波一種基于Lucene檢索系統(tǒng)的全文數(shù)據(jù)庫的設(shè)計與實現(xiàn)J現(xiàn)代圖書情報技術(shù),2005(2):77794車東在應(yīng)用中加入全文檢索功能基于Java的全文索引引擎Lucene簡介EB/OL,2002-085陳燁彬,黃琳基于Lucene.Net的知識檢索系統(tǒng)的設(shè)計與

溫馨提示

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

評論

0/150

提交評論