freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計-基于ajaxlucene構(gòu)建搜索引擎的設(shè)計和實現(xiàn)-論文-在線瀏覽

2025-02-03 17:12本頁面
  

【正文】 海量搜索歷史記錄。 國內(nèi) , 對搜索引擎的專注和對中文的理解能力也是中國本土 搜索 引擎行 業(yè)獨特的競爭力。 中文的 意思多種多樣 , 是很難用程序處理的 。為了 滿足用戶更深層次的需求 ,國內(nèi) 的搜索引擎也在不斷的完善自己。 中國網(wǎng)民對智能化搜索需求 也是顯而易見的。 本課題研究的意義 隨著 計算機技術(shù)和互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)上的信息量急劇增長,要在浩如煙海的網(wǎng)絡(luò)世界中尋找需要的信息,作為現(xiàn)代信息獲取技術(shù)的主要應(yīng)用,那么搜索引擎是必不可少的。 本課題的研究方法 在本系統(tǒng)的開發(fā)過程中,首先分 析 了搜索引擎 的相關(guān)功能 , 寫出需求分析;第 2 頁 共 19 頁 其次,綜合運用以前所學(xué)的相關(guān)知識(數(shù)據(jù) 庫, C# 等),選擇所熟悉的開發(fā)工具進行開發(fā)(本系 統(tǒng)選擇了 Microsoft Visual Studio .NET 2021 作為開發(fā)平臺,開發(fā)語言選擇了 C;數(shù)據(jù)庫采用 Microsoft SQL Server 2021) 。 使用 協(xié)助完成搜索引擎相關(guān)的網(wǎng)頁爬蟲與抓取,為文檔建立索引,關(guān)鍵詞搜索的功能,通過 Ajax 優(yōu)化系統(tǒng),完成頁面的局部刷新功能,給用戶好的體驗。真正意義上的搜索引擎,通常指的是收集了因特網(wǎng)上幾千萬到幾十億個網(wǎng)頁并對網(wǎng)頁中的每一個詞(即關(guān)鍵詞)進行索引,建立索引數(shù)據(jù)庫的全文搜索引擎。在經(jīng)過復(fù)雜的算法進行排序后,這些結(jié)果將按照與搜索關(guān)鍵詞的相關(guān)度排列 。 全文搜索 引擎 通過從互聯(lián)網(wǎng)上提取的各個網(wǎng)站的信息(以網(wǎng)頁文字為主)而建立的數(shù)據(jù)庫中,檢索與用 戶查詢條件匹配的相關(guān)記錄,然后按一定的排列順序?qū)⒔Y(jié)果返回給用戶 。 分類目錄則是通過人工的方式收集整理網(wǎng)站資料形成數(shù)據(jù)庫的,比如雅虎中國以及國內(nèi)的搜狐、新浪、網(wǎng)易分類 目錄。 搜索引擎的工作原理 搜索引擎的原理,可以 看作 三步:從互聯(lián)網(wǎng)上抓取網(wǎng)頁 , 建立索引數(shù)據(jù)庫 ,在索引數(shù)據(jù)庫中搜索。它為保證采集的資料最新,還會回訪已抓取過的網(wǎng)頁。我們平時看到的全 文搜索引擎,第 3 頁 共 19 頁 實際上只是一個搜索引擎系統(tǒng)的檢索界面,當(dāng)你輸入關(guān)鍵詞進行查詢時,搜索引擎會從龐大的數(shù)據(jù)庫中找到符合該關(guān)鍵詞的所有相關(guān)網(wǎng)頁的索引,并按一定規(guī)則呈現(xiàn)給我們。 利用能夠從互聯(lián)網(wǎng)上自動收集網(wǎng)頁的 Spider 程序,自動訪問互聯(lián)網(wǎng),并沿著 網(wǎng)頁中的所有 URL 爬到其它網(wǎng)頁,重復(fù)這過程,并把爬過的所有網(wǎng)頁收集回來。 接下來 在索引數(shù)據(jù)庫中搜索排序 , 當(dāng)用戶輸入關(guān)鍵詞搜索后,由搜索系統(tǒng)程序從網(wǎng)頁索引數(shù)據(jù)庫中找到符合該關(guān)鍵詞的所有相關(guān)網(wǎng)頁。搜索引擎只能搜到它網(wǎng)頁索引數(shù)據(jù)庫里儲存的內(nèi)容。和Java Lucene 兼容 的 可以用在 . 平臺。比如你要對一些 HTML 文檔, PDF 文檔進行索引的話你就首先需要把 HTML 文檔和 PDF 文檔轉(zhuǎn)化成文本格式的,然后將轉(zhuǎn)化后的內(nèi)容交給 Lucene 進行索引,然后把創(chuàng)建好的索引文件保存到磁盤或者內(nèi)存中,最后根據(jù)用戶輸入的查詢條件在索引文件上進行查詢。 如 圖 1 表示了搜索應(yīng)用程序和 Lucene 之間的關(guān)系,也反映了利用 Lucene構(gòu)建搜 索應(yīng)用程序的流程: 圖 1 應(yīng)用程序和 Lucene 第 4 頁 共 19 頁 索引和搜索 索引是現(xiàn)代搜索引擎的核心,建立索引 是把數(shù)據(jù)源處理成非常方便查詢的索引文件的過程。這就是由于建立了索引的原因,你可以把索引想象成這樣一種數(shù)據(jù)結(jié)構(gòu),他能夠使你快速的隨機訪問存儲在索引中 的關(guān)鍵詞,進而找到該關(guān)鍵詞所關(guān)聯(lián)的文檔。反向索引就是說我們維護了一個詞 /短語表,對于這個表中的每個詞 /短語,都有一個鏈表描述了有哪些文檔包含了這個詞 /短語。我們將在本系列文章的第二部分詳細介紹 Lucene 的索引機制,由于 Lucene 提供了簡單易用的 API,所以 也可以非常容易的使用 Lucene對文檔實現(xiàn)索引 的建立 。搜索引擎首先會對搜索的關(guān)鍵詞進行解析,然后再在建立好的索引上面進行查找,最終返回和用戶輸入的關(guān)鍵詞相關(guān)聯(lián)的文檔。 Ajax 技術(shù)是目前在瀏覽器中通過 JavaScript 腳本可以使用的所有技術(shù)的集合。 Ajax 技術(shù)之中,核心的技術(shù)就是 XMLHttpRequest,它最初的名稱叫做XMLHTTP,是微軟公司為了滿足開發(fā)者的需要, 1999 年在 瀏覽器中率先推出的。它正是 Ajax技術(shù)之所以與眾不同的地方。頁面內(nèi)的 JavaScript可以在不刷新頁面的情況下從服務(wù)器獲取數(shù)據(jù),或者向服務(wù)器提 交數(shù)據(jù)。它可以使我們以一種全新的方式來做 Web 開發(fā),為用戶提供更好的交互體驗。從 Ajax 的角度看來 , Web 應(yīng)用應(yīng)由少量的頁面組成,其中每個頁面其實是一個更小型的 Ajax 應(yīng)用。這些組件使用 XMLHttpRequest 對象以異步的方式與服務(wù)器通信,從服務(wù)器獲取需要的數(shù)據(jù)后使用 DOM API 來更新頁面中的一部分內(nèi)容。 2. 使用異步方式與服務(wù)器通信,不需要打斷用戶的操作,具有更加迅速的響應(yīng)能力。大部分交互在頁面之內(nèi)完成,不需要切換整個頁面。 3 需求分析 同步環(huán)境 本系統(tǒng)的同步環(huán)境如圖 3: 用戶操作后等待 …… .. 服務(wù)器端處理 客戶端頁面 處理 新的頁面呈現(xiàn) 數(shù)據(jù)提交 數(shù)據(jù)返回 第 6 頁 共 19 頁 因 特 網(wǎng)檢 索 服 務(wù) 器 圖 3 同步環(huán)境 檢索服務(wù)器通過 Inter 檢索 Web 頁面。 2. 能夠?qū)崿F(xiàn)一定 鏈接 深度的 網(wǎng)頁收集 ,也就是在 Inter上實現(xiàn)一定的 URL級的數(shù)據(jù) 收錄 。 4. 網(wǎng)站信 息庫中的信息會不斷的變動 ,對收集到的數(shù)據(jù)需要定期的自動維護,做到定期的刪除、從新收集。 6. 對檢索出的數(shù)據(jù)要可定位性 , 即可以 顯示 對數(shù)據(jù)的出處的鏈接。 8. 實現(xiàn)無刷新的顯示搜索結(jié)果,對搜索用時的計算、顯示,關(guān)鍵字高亮顯示等。 性能需求 1. 精度 : 對收集到的信息需要一定的完整性,即對鏈接層次里的每個鏈接頁面都能夠收集得到,并寫入收集的存 儲區(qū)里。收集數(shù)據(jù)時不能夠出現(xiàn)無響應(yīng)的等待。 3. 靈活性 具有良好的中文切詞功能。 處理:去前后空格,關(guān)鍵字,查詢索引庫。 運行需求 1. 硬件環(huán)境需求 : 需要使用 專用服務(wù)器, P4 以上, 512M 以上內(nèi)存, 80G 以 上硬盤; Inter網(wǎng)絡(luò)連接。 4 方案 設(shè)計 結(jié)合前面的同步原理,以及需求的介紹,下面給出同步的方案設(shè)計。 爬蟲 包括: 網(wǎng)頁抓取模塊、 網(wǎng)頁減肥 模塊、爬蟲維持模塊 。查詢部分有 Ajax、后臺處理、前臺界面模塊。 圖 4 系統(tǒng) 模塊 數(shù)據(jù)庫的設(shè)計 本課題包含一張用于存放抓取回來的網(wǎng)頁信息如表 1。系統(tǒng)的功能流程 (如 圖 和 )。流程如上圖所示。這條件可以是限定的謀個域名空間、或者是限定的網(wǎng)頁抓取級數(shù)。絕對地址是指一個準(zhǔn)確的、無歧義的 Inter 資源的位置,包含域名(主機名)、路徑名和文件名;相對地址是絕對地址的一部分。然后通過正則表達式,去掉多余的 HTML 標(biāo)簽。 讓爬蟲程序能繼續(xù)運行下去 , 就得抓取這個網(wǎng)頁上的其它 URL,所以 要用正則將這個網(wǎng)頁上的所有 URL 都取出來 放到一個隊列里。 為 了對 文檔進行索引, Lucene 提供了五個基礎(chǔ)的類,他們分別是 Document,F(xiàn)ield, IndexWriter, Analyzer, Directory Document 是用來描述文檔的,這里的文檔可以指一個 HTML 頁面,一封電子郵件,或者是一個文本文件??梢园岩粋€ Document 對象想象成數(shù)據(jù)庫中的一個記錄,而每個 Field 對象就是記錄的一個字段。Analyzer 類是一個抽象類,它有多個實現(xiàn)。 Analyzer 把分詞后的內(nèi)容交給 IndexWriter 來建立 索引 。通過查詢頁面,輸入關(guān)鍵字,提交給系統(tǒng),程序就開始處理,最后把結(jié)果以列表的形式顯示 出來。 第 10 頁 共 19 頁 5 系統(tǒng) 實現(xiàn) 開發(fā)環(huán)境 開發(fā)平臺的選擇:本系統(tǒng)的開發(fā)平臺選擇微軟公司的 .NET,開發(fā)工具采用。數(shù)據(jù)庫選擇:根據(jù)需求分析選擇了 MSSQL Server 2021。生成索引需要調(diào)用 類。并可以定位到信息的出處。 爬蟲部分 這部份的功能就是從輸入的 URL開始遍歷各個相關(guān)的網(wǎng)頁,它包括三個功能模塊: 網(wǎng)頁抓取模塊、網(wǎng)頁減肥模塊、爬蟲維持模塊。然后根據(jù)全局變量 url 抓取此 URL的網(wǎng)頁信息到字節(jié)流變量里,經(jīng)過轉(zhuǎn)碼后讀取到變量 PageString 里,下步通過函數(shù) GetHttpUrl(PageString)對PageString 中的 URL 標(biāo) 記 進 行 提取 并返 回 到 urlList 變 量里 ,函 數(shù)GetTitle(PageString) 、 parseScript(PageString) 、 parseHtml(PageString) 、網(wǎng)頁爬蟲 Console 端應(yīng)用程序 數(shù) 據(jù) 庫 索引生成 Console 端應(yīng)用 查詢 Web 程序 第 11 頁 共 19 頁 parseChar(Content)分別對網(wǎng)頁信息變量獲取標(biāo)題、去除腳本塊、去除 HTML 標(biāo)記、去除特殊字符操作。再下步就是循環(huán)的對獲取到的 URL 列表創(chuàng)建線程,針對每個 URL 來循環(huán)的執(zhí)行上面的網(wǎng)頁信息的抓取操作。 String Content=。 string URL=。 StringBuilder urlList = new StringBuilder()。 try { Stream strm=null。 } catch { (url無法找到! )。 } StreamReader sr=new StreamReader(strm,(gb2312))。//從流中讀取網(wǎng)頁信息到字符串變量中 ()。 title=GetTitle(PageString)。 //去掉腳本 的網(wǎng)頁文本 Content=parseHtml(PageString)。 mata=。 if((title != || title != ) amp。 URL != ) { (insert into WebContent(url,content,title,mata) values(39。,39。,39。,39。))。 } else 第 12 頁 共 19 頁 { (對 url:+URL+相關(guān)信息寫入數(shù)據(jù)庫失敗 !)。|39。 //對前面獲取的 URL列表循環(huán)的創(chuàng)建線程再執(zhí)行本方法實現(xiàn)爬蟲的維持 for(int i=0。i++) { url=urlArr[i]。 Thread th = new Thread(new ThreadStart(UrlThread))。 } } catch{} } 索引生成 這部分包含對文本的索引生成以及對數(shù)據(jù)庫數(shù)據(jù)的索引生成,下面只對數(shù)據(jù)庫索引生成的關(guān)鍵代碼進行介紹: 下面這段代碼實現(xiàn)對數(shù)據(jù)庫里存儲的記錄創(chuàng)建索引。 public Indexer(string indexDir) { region Lucene Code 首先通過標(biāo)準(zhǔn)分詞定義了一個索引寫入器 IndexWriter writer = new IndexWriter(indexDir, new StandardAnalyzer(), true)。此方式有助于減少索引文件數(shù)量,減少同時打開的文件數(shù)量 。 //刪除以前生成的索引文件。 endregion DateTime start = 。// DateTime end = 。 (Index Finished. {0} Documents takes {1} second., docNum, ((TimeSpan)(end start)).TotalSeconds)。 ()。 (Indexing {0} , row[title].ToString())。 ((title, row[title].ToString()))。 ((CreateDate,row[CreateDate].ToString()))。 ((ID,row[ID].ToString()))。 頁面查詢 這部分主要完成的功能是獲取前臺表單中輸入的關(guān) 鍵字,在程序中獲取查詢結(jié)果,最后把列表顯示在前臺頁面。為了方便的在程序中使用 Ajax,此系統(tǒng)引用了封裝完善的 Ajax類庫。選取部分代碼來說明: 首先在頁面后臺程序中進行 Ajax 注冊,代碼如下: private void Page_Load(object sender, e) { //ajax注冊 (typeof(Search))。 [] public string SearchResult(string keywords,string pageNo) { 其中,前臺所存在的文字的代碼如下: StringBuilder sb = new StringBuilder()。 前臺顯示結(jié)果記錄的代碼,動態(tài)生成 table 標(biāo)簽,如下: for(
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1