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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、商務井噴式的發(fā)展,以及越來越多的社交網站、團購網站、專門類信息網站的出現(xiàn),海量的數(shù)據(jù)蘊含在網站之內。巨大的信息量無疑是把雙刃劍,在給用戶提供豐富信息的同時,也給用戶提了一個大大的難題,如何在這海量信息中找到用戶想得到的信息,尤其是當用戶提供的是一組信息不是十分明確的詞組時,如何能講有用的信息條理清晰地提供給用戶,這進一步刺激了站內搜索技術的發(fā)展。本文在總結站內搜索功能的同時,在研究了站內搜索相關技術的基礎上,設計并實現(xiàn)了一個簡易的站內搜索引擎,實現(xiàn)了在內搜索的主要功能。關鍵詞:站內搜索;.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)了檢索技術。文本檢索技術的發(fā)展從最初的SMART文檔檢索系統(tǒng)到AltaVista搜索引擎,到現(xiàn)在的搜索巨頭Google,人們習慣在互聯(lián)網上搜索需要的信息1。同時在同一個網站內往往擁有大量的資源,怎樣在網站內部使用戶能夠迅速的找到所需信息,已成為一個網站能夠吸引用戶的重要方面。隨著信息地快速增長,這一方面的需求越來越大,在很大程度上嚴重影響到 Web 站點的成功2。因此,建立站內搜索引擎成為必要。所謂站內搜索無非就是對數(shù)據(jù)庫信息

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

22、簡單的數(shù)據(jù)表Article,如表1。字段名數(shù)據(jù)類型是否允許為空說明IDINT否編號,關鍵字TitleNVARCHAR (50)否信息標題ContentVARCHAR (MAX) 否信息內容表1 Article表第4章 站內搜索引擎關鍵代碼實現(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 = 請輸入關鍵字:.; 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(); 用于高亮關鍵字的代碼: 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章 總結與展望本設計實現(xiàn)了一個簡易的站內搜索引擎,通過該設計的制作,使我對專業(yè)所學有了進一步的認識,在增強實際操作能力的同時,也對相關理論知識的關聯(lián)性有了更深的了解,更重要的是在這一過程中又學到了很多新的知識。系統(tǒng)在經過

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

溫馨提示

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

最新文檔

評論

0/150

提交評論