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

正文內(nèi)容

一個(gè)java搜索引擎的實(shí)現(xiàn)論文(編輯修改稿)

2025-07-23 18:45 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 有的 java 版本實(shí)現(xiàn)或者使用本教程提供的源碼下載中的 MD5 類(lèi)。對(duì)于 MD5,我們知道其功能,能使用就可以,具體的每個(gè)步驟的意義不需要深入理解。[正文信息抽取]PageGetter在正文信息抽取之前,我們首先需要一個(gè)簡(jiǎn)單的工具類(lèi),該工具類(lèi)可以取出數(shù)據(jù)庫(kù)中的內(nèi)容并且去原始網(wǎng)頁(yè)集中獲得網(wǎng)頁(yè)信息,對(duì)于該功能的實(shí)現(xiàn)在 中,該類(lèi)通過(guò) URL 從數(shù)據(jù)庫(kù)中獲得該 URL 對(duì)應(yīng)的網(wǎng)頁(yè)數(shù)據(jù)的所在網(wǎng)頁(yè)庫(kù)名以及偏移,然后就可以根據(jù)偏移來(lái)讀取該網(wǎng)頁(yè)的數(shù)據(jù)內(nèi)容,同樣以原始網(wǎng)頁(yè)集中各記錄間的空行作為數(shù)據(jù)內(nèi)容的結(jié)束標(biāo)記,讀取內(nèi)容之后,通過(guò) MD5 計(jì)算當(dāng)前讀取的內(nèi)容的摘要,校驗(yàn)是否與之前的摘要一致。對(duì)于偏移的使用,BufferedReader 類(lèi)提供一個(gè) skip(int offset) 的函數(shù),其作用是跳過(guò)文檔中,從當(dāng)前開(kāi)始計(jì)算的 offset 個(gè)字符,用這個(gè)函數(shù)我們就可以定位到我們需要的記錄。清單 3. 獲取原始網(wǎng)頁(yè)庫(kù)中內(nèi)容 public String getContent(String fileName, int offset) { String content = 。 try { FileReader fileReader = new FileReader(fileName)。 BufferedReader bfReader = new BufferedReader(fileReader)。 (offset)。 readRawHead(bfReader)。 content = readRawContent(bfReader)。 } catch (Exception e) {()。} return content。 } 上述代碼中,省略了 readRawHead 和 readRawContent 的實(shí)現(xiàn),這些都是基本的 I/O 操作,詳見(jiàn)所附源碼。[正文抽取]對(duì)于獲得的單個(gè)網(wǎng)頁(yè)數(shù)據(jù),我們就可以進(jìn)行下一步的處理,首先要做的就是正文內(nèi)容的抽取,從而剔除網(wǎng)頁(yè)中的標(biāo)簽內(nèi)容,這一步的操作主要采用正則表達(dá)式來(lái)完成。我們用正則表達(dá)式來(lái)匹配 html 的標(biāo)簽,并且把匹配到的標(biāo)簽刪除,最后,剩下的內(nèi)容就是網(wǎng)頁(yè)正文。限于篇幅,我們以過(guò)濾 script 標(biāo)簽為示例,其代碼如下 :清單 4. 標(biāo)簽過(guò)濾 public String html2Text(String inputString) { String htmlStr = inputString。 // 含 html 標(biāo)簽的字符串 Pattern p_script。 Matcher m_script。 try { String regEx_script = script[^]*?[\\s\\S]*?/script。 p_script = (regEx_script,)。 m_script = (htmlStr)。 htmlStr = ()。 // 過(guò)濾 script 標(biāo)簽 }catch(Exception e) {()。} return htmlStr。// 返回文本字符串 }通過(guò)一系列的標(biāo)簽過(guò)濾,我們可以得到網(wǎng)頁(yè)的正文內(nèi)容,就可以用于下一步的分詞了。[分詞]中文分詞是指將一個(gè)漢字序列切分成一個(gè)一個(gè)單獨(dú)的詞,從而達(dá)到計(jì)算機(jī)可以自動(dòng)識(shí)別的效果。中文分詞主要有三種方法:第一種基于字符串匹配,第二種基于語(yǔ)義理解,第三種基于統(tǒng)計(jì)。由于第二和第三種的實(shí)現(xiàn)需要大量的數(shù)據(jù)來(lái)支持,所以我們采用的是基于字符串匹配的方法?;谧址ヅ涞姆椒ㄓ纸凶鰴C(jī)械分詞方法,它是按照一定的策略將待分析的漢字串與一個(gè)“充分大的”機(jī)器詞典中的詞條進(jìn)行配,若在詞典中找到某個(gè)字符串,則匹配成功(識(shí)別出一個(gè)詞)。按照掃描方向的不同,串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長(zhǎng)度優(yōu)先匹配的情況,可以分為最大(最長(zhǎng))匹配和最小(最短)匹配。常用的幾種機(jī)械分詞方法如下:1. 正向減字最大匹配法(由左到右的方向);2. 逆向減字最大匹配法(由右到左的方向);3. 最少切分(使每一句中切出的詞數(shù)最小);4. 雙向最大減字匹配法(進(jìn)行由左到右、由右到左兩次掃描);我們采用其中的正向最大匹配法。算法描述如下:輸入值為一個(gè)中文語(yǔ)句 S,以及最大匹配詞 n1. 取 S 中前 n 個(gè)字,根據(jù)詞典對(duì)其進(jìn)行匹配,若匹配成功,轉(zhuǎn) 3,否則轉(zhuǎn) 2;2. n = n – 1:如果 n 為 1,轉(zhuǎn) 3;否則轉(zhuǎn) 1;3. 將 S 中的前 n 個(gè)字作為分詞結(jié)果的一部分,S 除去前 n 個(gè)字,若 S 為空,轉(zhuǎn) 4;否則,轉(zhuǎn) 1;4. 算法結(jié)束。需要說(shuō)明的是,在第三步的起始,n 如果不為 1,則意味著有匹配到的詞;而如果 n 為 1,我們默認(rèn) 1 個(gè)字是應(yīng)該進(jìn)入分詞結(jié)果的,所以第三步可以將前 n 個(gè)字作為一個(gè)詞而分割開(kāi)來(lái)。還有需要注意的是對(duì)于停用詞的過(guò)濾,停用詞即漢語(yǔ)中“的,了,和,么”等字詞,在搜索引擎中是忽略的。分詞的結(jié)果對(duì)于搜索的精準(zhǔn)性有著至關(guān)重要的影響,好的分詞策略經(jīng)常是由若干個(gè)簡(jiǎn)單算法拼接而成的,所以您也可以試著實(shí)現(xiàn)雙向最大減字匹配法來(lái)提高分詞的準(zhǔn)確率。而如果遇到歧義詞組,可以通過(guò)字典中附帶的詞頻來(lái)決定哪種分詞的結(jié)果更好。倒排索引這個(gè)章節(jié)我們?yōu)槟v解預(yù)處理模塊的最后兩個(gè)步驟,索引的建立和倒排索引的建立。有了分詞的結(jié)果,我們就可以獲得一個(gè)正向的索引,即某個(gè)網(wǎng)頁(yè)以及其對(duì)應(yīng)的分詞結(jié)果。如下圖所示:圖 2. 正向索引圖 3. 倒排索引我們建立了索引網(wǎng)頁(yè)庫(kù),用于通過(guò) URL 可以直接定位到原始網(wǎng)頁(yè)庫(kù)中該 URL 對(duì)應(yīng)的數(shù)據(jù)的位置;而現(xiàn)在的正向索引,我們可以通過(guò)某個(gè)網(wǎng)頁(yè)的 URL 得到該網(wǎng)頁(yè)的分詞信息。獲得正向索引看似對(duì)于我們的即將進(jìn)行的查詢操作沒(méi)有什么實(shí)際的幫助,因?yàn)椴樵兎?wù)是通過(guò)關(guān)鍵詞來(lái)獲得網(wǎng)頁(yè)信息,而正向索引并不能通過(guò)分詞結(jié)果反查網(wǎng)頁(yè)信息。其實(shí),我們建立正向索引的目的就是通過(guò)翻轉(zhuǎn)的操作建立倒排索引。所謂倒排就是相對(duì)于正向索引中網(wǎng)頁(yè)——分詞結(jié)果的映射方式,采用分詞——對(duì)應(yīng)的網(wǎng)頁(yè)這種映射方式。與圖 2 相對(duì)應(yīng)的倒排索引如上圖 3 所示。接下來(lái)我們分析如何從正向索引來(lái)得到倒排索引。算法過(guò)程如下:1. 對(duì)于網(wǎng)頁(yè) i,獲取其分詞列表 List;2. 對(duì)于 List 中的每個(gè)詞組,查看倒排索引中是否含有這個(gè)詞組,如果沒(méi)有,將這個(gè)詞組插入倒排索引的索引項(xiàng),并將網(wǎng)頁(yè) i 加到其索引值中;如果倒排索引中已經(jīng)含有這個(gè)詞組,直接將網(wǎng)頁(yè) i 加到其索引值中;3. 如果還有網(wǎng)頁(yè)尚未分析,轉(zhuǎn) 1;否則,結(jié)束建立倒排索引的算法不難實(shí)現(xiàn),主要是其中數(shù)據(jù)結(jié)構(gòu)的選用,在 dySE 中,正向索引和倒排索引都是采用 HashMap 來(lái)存儲(chǔ),映射中正向索引的鍵是采用網(wǎng)頁(yè) URL 對(duì)應(yīng)的字符串,而倒排索引是采用分詞詞組,映射中的值,前者是一個(gè)分詞列表,后者是一個(gè) URL 的字符串列表。這里可以采用一個(gè)優(yōu)化,分別建立兩個(gè)表,按照標(biāo)號(hào)存儲(chǔ)分詞列表和 URL 列表,這樣,索引中的值就可以使用整型變量列表來(lái)節(jié)省空間。第 3 部分: 查詢服務(wù)查詢服務(wù)的整體結(jié)構(gòu)查詢服務(wù)的整體結(jié)構(gòu)如下:圖 1. 查詢服務(wù)整體結(jié)構(gòu)在前面兩部分的敘述中,我們有了放在文件中的原始網(wǎng)頁(yè)庫(kù)、放在數(shù)據(jù)庫(kù)中的網(wǎng)頁(yè)索引 ( 指示某個(gè)網(wǎng)頁(yè)所在原始網(wǎng)頁(yè)庫(kù)的位置 )、倒排索引,以及一些小工具:分詞器。在這些部件的基礎(chǔ)上,我們開(kāi)始搭建我們搜索引擎的界面并且實(shí)現(xiàn)信息的輸入和輸出。以下的章節(jié)安排如下:首先我們完善后臺(tái)服務(wù),使得程序能夠在控制臺(tái)輸入查詢的情況下,在控制臺(tái)中返回需要的結(jié)果信息,這些結(jié)果將在后續(xù)的部分中返回給網(wǎng)頁(yè)進(jìn)行顯示;其次,我們搭建 Web 服務(wù)器,進(jìn)行網(wǎng)頁(yè)編程,使得查詢服務(wù)與后臺(tái)服務(wù)程序能夠交互;最后我們介紹網(wǎng)頁(yè)結(jié)果返回時(shí)的一些優(yōu)化,比如網(wǎng)頁(yè)排名的實(shí)現(xiàn)。[簡(jiǎn)單查詢]在第二部分預(yù)處理之后,我們現(xiàn)有的待用數(shù)據(jù)如下:原始網(wǎng)頁(yè)庫(kù),網(wǎng)頁(yè)索引,倒排索引,分詞器。為了方便您對(duì)于后文的理解,我們?cè)俅握f(shuō)明這些資源的用途:原始網(wǎng)頁(yè)庫(kù)記錄了爬蟲(chóng)獲取的各個(gè)網(wǎng)頁(yè)信息,按照一定的格式保留在本地;然而這些網(wǎng)頁(yè)信息不便于隨機(jī)的進(jìn)行訪問(wèn),所以我們通過(guò)網(wǎng)頁(yè)索引記錄某個(gè)網(wǎng)頁(yè)在原始網(wǎng)頁(yè)庫(kù)中的位置,以方便查詢;倒排索引是一個(gè)關(guān)鍵字和包含這個(gè)關(guān)鍵字的網(wǎng)頁(yè) URL 集合的映射,通過(guò)倒排索引可以方便的得到哪些網(wǎng)頁(yè)包含確定的關(guān)鍵詞;分詞器的作用在于可以對(duì)用戶輸入的文字進(jìn)行分詞,因
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1