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

正文內(nèi)容

基于lucene的站內(nèi)搜索引擎的設(shè)計(jì)實(shí)現(xiàn)論文(參考版)

2024-11-14 15:58本頁面
  

【正文】 同時(shí)本系統(tǒng)也存在一些缺點(diǎn): 雖然對(duì)中文分詞進(jìn)行了仔細(xì)的研究,但因?yàn)閭€(gè)人能力和時(shí)間有限,沒有對(duì)中文分詞進(jìn)行開發(fā),而采用的是 LUCENE 標(biāo)準(zhǔn)的分析器,標(biāo)準(zhǔn)的分析器對(duì)于一般的中小型應(yīng)用完全可以勝任,但 對(duì) 大型應(yīng) 用 。還有我通過對(duì) LUCENE 建立靜態(tài)和動(dòng)態(tài)的 索引 , 對(duì) LUCENE 可以搜索的文件格式也有了新的認(rèn)識(shí),對(duì)任何可以轉(zhuǎn)化為 LUCENE格式的任何文件能進(jìn)行搜索, 同時(shí)也知道了 對(duì)索引建立 增量索引不論是從建立索引的時(shí)間減少和搜索效率的提高有很大的提高 。 對(duì) LUCENE 本身 原理和組織結(jié)構(gòu) 進(jìn)行了全面而詳細(xì)的闡述。這個(gè)過程類似于通過字典中的檢索字表查字的過程。 介紹了以下內(nèi)容。 對(duì)于不同于以上兩種的網(wǎng)頁文件,我采用的是將網(wǎng)頁的內(nèi)容做成圖片文件,這樣就可以保護(hù)信息不被抓取到。 對(duì)于 私密 文件的處理 同時(shí)對(duì)于網(wǎng)站內(nèi)不可以進(jìn)行搜索的私密內(nèi)容我采取了以下措施: 對(duì)于靜態(tài)文件,盡量將不能搜索的內(nèi)容和能夠搜索的內(nèi)容放到不能的文件夾中或者指定某些文件格式的文件建立索引,這樣對(duì)能夠搜索的文件夾建立索引就可以了。 conn = null。 畢業(yè)論文 第 31 頁 sda = null。 (doc)。 ((url, [k][urlColumnName].ToString()))。 (ParseHtml([k][textColumenName].ToString())。 k++) { html = new StringBuilder()。 for (int k = 0。 StringBuilder html。 DataTable dt=new DataTable()。 SqlDataAdapter sda = new SqlDataAdapter(sql, conn)。 ()。 (doc)。 ((url, + relativePath))。 string relativePath = (relativePathStartsAt)。 using(StreamReader sr = new StreamReader(path,)) { html = ()。 LUCENE 文件格式的通用性 在創(chuàng)建索引的時(shí)候根據(jù)文件的存儲(chǔ)位置的不同和文件的格式不同都可以建立索引并進(jìn)行搜索證明了 LUCENE 具有良好的通用性,在靜態(tài)索引中通過 private void AddHtmlToDocument(string path) { Document doc = new Document()。 畢業(yè)論文 第 29 頁 表 優(yōu)化索引前后對(duì)比 關(guān)鍵字 優(yōu)化索引前搜索所用時(shí)間 優(yōu)化索引后搜索所用時(shí)間 優(yōu)化前索引大小 優(yōu)化后索引大小 搜索命中關(guān)鍵字記錄 /搜索總記錄 提高搜索效率 特奧會(huì) 秒 秒 277k 139k 34/115 % 上海 秒 秒 277k 139k 54/115 % 的 秒 秒 277k 139k 64/115 40% World 秒 秒 277k 139k 63/617 % Olympics 秒 秒 277k 139k 77/617 % people 秒 秒 277k 139k 43/617 % 以上這些數(shù)據(jù) 是我從我們項(xiàng)目中的數(shù)據(jù)庫里面的數(shù)據(jù),從上面的表格中可以看出優(yōu)化索引前后搜索時(shí)間的變化,另外當(dāng)搜索數(shù)據(jù)量越大,優(yōu)化索引的優(yōu)勢(shì)體現(xiàn)的越明顯。 畢業(yè)論文 第 26 頁 搜索界面 圖 搜索 界面 畢業(yè)論文 第 27 頁 搜索 結(jié)果 界面 圖 搜索 結(jié)果 畢業(yè)論文 第 28 頁 LUCENE 增量索引 LUCENE 搜索與數(shù)據(jù)庫搜索最大的不同之處就是為要搜索的內(nèi)容建立了全文索引的機(jī)制 其他的一些搜索引擎 只支持批量的索引,有時(shí)數(shù)據(jù)源有一點(diǎn)增加也需要重建索引 ,大部分的搜索(數(shù)據(jù)庫)引擎都是用 B 樹結(jié)構(gòu)來維護(hù)索引,索引的 重建 會(huì)導(dǎo)致大量的 IO操作 ,導(dǎo)致了搜索效率的下降, 而 LUCENE 可以通過對(duì)索引的文件進(jìn)行增量索引 , LUCENE 不是維護(hù)一個(gè)索引文件,而是在擴(kuò)展索引的時(shí)候不斷創(chuàng)建新的索引文件,然后定期的把這些新的小索引文件合并到原先的大索引中(針對(duì)不同 的更新策略,批次的大小可以調(diào)整),這樣在不影響檢索的效率的前提下,提高了索引的效率 ,我在開發(fā)自己的搜索引擎時(shí)也用到了增量索引,使我的搜索更加準(zhǔn)確而高效。 畢業(yè)論文 第 23 頁 圖 集群服務(wù)器示意圖 當(dāng)客戶端發(fā)起 HTTP 請(qǐng)求的 時(shí)候,該請(qǐng)求經(jīng)過 Inter 解析域名,該域名通過地址映射到實(shí)際的兩臺(tái)服務(wù)器上,兩個(gè)服務(wù)器共同來響應(yīng)客戶端的請(qǐng)求,當(dāng)其中的一臺(tái)服務(wù)器出現(xiàn)問題的時(shí)候另一臺(tái)服務(wù)器可以 繼續(xù)服務(wù),從而達(dá)到了網(wǎng)站的穩(wěn)定性。 圖 系統(tǒng)搜索結(jié)構(gòu)圖 開發(fā)環(huán)境與工具 網(wǎng)站采用 微軟 的 Microsoft +SQLSERVER2020 數(shù)據(jù)庫 平臺(tái) 進(jìn)行開發(fā),考慮到系統(tǒng)的兼容性,我使用了 LUCENE 的 .NET 版本 ()對(duì) 站內(nèi)搜索引擎 進(jìn)行了開發(fā) 。 在點(diǎn)擊進(jìn)去每一個(gè)模塊都會(huì)有一個(gè)站內(nèi)搜索功能。 而用普通的順序匹配 算法,不建索引,而是對(duì)所有文章的內(nèi)容進(jìn)行字符串匹配,這個(gè)過程將會(huì)相當(dāng)緩慢,當(dāng)文章數(shù)目很大時(shí),時(shí)間往往是無法忍受的。 假設(shè)要查詢單詞 “l(fā)ive”, LUCENE 先對(duì)詞典二元查找、找到該詞,通過指向頻率文件的 畢業(yè)論文 第 20 頁 指針讀出所有文章號(hào),然后返回結(jié)果。例如當(dāng)前文章號(hào)是 16389(不壓縮要用 3 個(gè)字節(jié)保存),上一文章號(hào)是 16382,壓縮后保存 7(只用一個(gè)字節(jié))。首先,對(duì)詞典文件中的關(guān)鍵詞進(jìn)行了壓縮,關(guān)鍵詞壓縮為 前綴長(zhǎng)度,后綴 ,例如:當(dāng)前詞為 “阿拉伯語 ”,上一個(gè)詞為 “阿拉伯 ”,那么 “阿拉伯語 ”壓縮為 3,語 。 LUCENE 中使用了 field 的概念,用于表達(dá)信息所在位置(如標(biāo)題中,文章中, url中),在建索引中,該 field 信息也記錄在詞典文件中,每個(gè)關(guān)鍵詞都有一個(gè) field 信息 (因?yàn)槊總€(gè)關(guān)鍵字一定屬于一個(gè)或多個(gè) field)。 實(shí)現(xiàn)時(shí) LUCENE 將上面三列分別作為詞典文件( Term Dictionary)、頻率文件(frequencies)、位置文件 (positions)保存。 以上就是 LUCENE 索引結(jié)構(gòu)中最核心的部分。文章 1, 2 經(jīng)過倒排后變成 表 LUCENE倒排序原理 1 關(guān)鍵詞 文章號(hào) guangzhou 1 he 2 i 1 live 1,2 shanghai 2 tom 1 通常僅知道關(guān)鍵詞在哪些文章中出現(xiàn)還不夠,我們還需要知道關(guān)鍵詞在文章中出現(xiàn)次數(shù)和出現(xiàn)的位置,通常有兩種位置: (1)字符位置,即記錄該詞是文章中第幾個(gè)字符(優(yōu)點(diǎn)是關(guān)鍵詞亮顯時(shí)定位快); (2)關(guān)鍵詞位置,即記錄該詞是文章中第幾個(gè)關(guān)鍵詞(優(yōu)點(diǎn)是節(jié)約索引空間、詞組( phase)查詢快), LUCENE 中記錄的就是這種位置。 (4) 用戶通常希望查 “l(fā)ive”時(shí)能把含 “l(fā)ives”, “l(fā)ived”的文章也找出來,所以 需要把“l(fā)ives”, “l(fā)ived”還原成 “l(fā)ive” (5) 文章中的標(biāo)點(diǎn)符號(hào)通常不表示某種概念,也可以過濾掉 ,在 LUCENE 中以上措施由 Analyzer 類完成 ,經(jīng)過上面處理后 : 文章 1 的所有關(guān)鍵詞為: [tom] [live] [guangzhou] [live] [guangzhou] 文章 2 的所有關(guān)鍵詞為: [he] [live] [shanghai] 2.、 有了關(guān)鍵詞后,我們就可以建立倒排索引了 上面的對(duì)應(yīng)關(guān)系是: “文章號(hào) ”對(duì) “文章中所有關(guān)鍵詞 ”。中文單詞間是連在一起的需要特殊的分詞處理。 LUCENE 的 倒排序原理 LUCENE 的索引排序是使用了倒排序原理 , 該結(jié)構(gòu)及相應(yīng)的生成算法如下: 設(shè)有兩篇文章 1 和 2 文章 1 的內(nèi)容為: Tom lives in Guangzhou,I live in Guangzhou too. 文章 2 的內(nèi)容為: He once lived in Shanghai. 1 、 由于 LUCENE 是基于關(guān)鍵詞索引和查詢的,首先我們要取得這兩篇文章的關(guān)鍵詞,通常我們需要如下處理措施 (1) 我們現(xiàn)在有的是文章內(nèi)容,即一個(gè)字符串,我們先要找出字符串中的所有 單詞,即分詞?;旧隙裕且粋€(gè)倒排索引,但是 LUCENE 在文件的安排上做了一些努力,比如使用索引 /信息文件的方式,從文件安排的形式上提高查找的效率。這樣,整個(gè)段的索引信息就通過這些文檔有機(jī)的組成。這樣,域集合和項(xiàng)集合不僅僅聯(lián)系起來,而且其中的文件之間也相互聯(lián)系起來。比如在圖 所示文件中, 與 , 與 、 、 之間,都存在這樣的組織關(guān)系。這兩個(gè)集合中所含 畢業(yè)論文 第 17 頁 有的文件在圖 中均有表明。在這些宏觀上的關(guān)系理清楚之后即可清楚的明白具體的 LUCENE 文件格式。 圖 LUCENE 索引文件結(jié)構(gòu)組成 關(guān)于圖 中的各個(gè)文件具體的內(nèi)部格式,在參考文獻(xiàn) 3 中,均可以找到詳細(xì)的說明。每個(gè)段包含一組文件,它們的文件擴(kuò)展名不同,但是文件名均為記錄在文件 segments 中段的名字。 從概念上映射到結(jié)構(gòu)中,索引被處理為一個(gè)目錄(文件夾),其中含有的所有文件即為 其內(nèi)容,這些文件按照所屬的段不同分組存放,同組的文件擁有相同的文件名,不同的擴(kuò)展名。子索引可以組合為索引,也可以合并為一個(gè)新的包含了所有合并項(xiàng)內(nèi)部元素的子索引。域是一個(gè)關(guān)聯(lián)的元組,由一個(gè)域名和一個(gè)域值組成,域名是一個(gè)字串,域值是一個(gè)項(xiàng),比如將“標(biāo)題”和實(shí)際標(biāo)題的項(xiàng)組成的域。 LUCENE 索引 index 由若干段 (segment) 畢業(yè)論文 第 16 頁 組成,每一段由若干的文檔( document)組成,每一個(gè)文檔由若干的域( field)組成,每一個(gè)域由若干的項(xiàng)( term)組成。接下來我們看看 LUCENE 索引文件的概 念組成和結(jié)構(gòu)組成??梢哉J(rèn)為值可以為無限大。因此,我們以下的內(nèi)容,結(jié)合了我們自己的分析與 文件格式的定義規(guī)范,以期望給出一個(gè)更加清晰的文件格式說明。因此,這一部分所涉及到的內(nèi)容,對(duì)于 LUCENE 上的應(yīng)用開發(fā)也是有價(jià)值的,尤其是本部分所做的文件格式分析。接 下來,我們?cè)噲D來分析 LUCENE 項(xiàng)目(采用 LUCENE 版本)的源碼實(shí)現(xiàn),考察其實(shí)現(xiàn)的細(xì)節(jié)。沒有提到的模塊則是做為系統(tǒng)公共基礎(chǔ)設(shè)施存在。索引查找邏輯則主要是 ,但是也大量的使用了 部分的代碼和接口定義。查詢結(jié)束之后向評(píng)分排序邏輯輸出 token 流,繼而由評(píng)分排序邏輯處理之后給出文本流的結(jié)果,這一部分的實(shí)現(xiàn)也包含在了 中。 詞 法 分 析 邏 輯 對(duì) 應(yīng) 于 部 分 。查詢語句對(duì)象流則是僅僅在查詢語句解析 畢業(yè)論文 第 14 頁 時(shí)用到的概念,它對(duì)查詢語句抽象,通過類的繼承結(jié)構(gòu)反映查詢語句的結(jié)構(gòu),將之傳送到查找邏輯來進(jìn)行查找的操作。 Token 流是 LUCENE 內(nèi)部所使用的概念,是對(duì)傳統(tǒng)文字中的詞的概念的抽象,也是 LUCENE 在建立索引時(shí)直接處理的最小單位;簡(jiǎn)單的講 Token 就是一個(gè)詞和所在域值的組合,后面在敘述文件格式時(shí)也將繼續(xù)涉及到token, 這里不詳細(xì)展開。 圖中共存在 4 種數(shù)據(jù)流,分別是文本流、 token 流、字節(jié)流與查詢語句對(duì)象流。 畢業(yè)論文 第 13 頁 LUCENE 系統(tǒng)中的主要的數(shù)據(jù)流以及它們之間的關(guān)系圖: 圖 數(shù)據(jù)流圖 圖 很好的表明了 LUCENE 在內(nèi)部的數(shù)據(jù)流組織情況,并且沿著數(shù)據(jù)流的方向我們也可以對(duì)與 LUCENE 內(nèi)部的執(zhí)行時(shí)序有一個(gè)清楚的了解。在此基礎(chǔ)上,我們能夠更加深入的理解 LUCENE 的系統(tǒng)結(jié)構(gòu)組織,以方便以后在 LUCENE系統(tǒng)上的開發(fā)工作。首先是定義了一個(gè)與平臺(tái)無關(guān)的索引文件格式,其次通過抽象將系統(tǒng)的核心組成部分設(shè)計(jì)為抽象類,具體的平臺(tái)實(shí)現(xiàn)部分設(shè)計(jì)為抽象類的實(shí)現(xiàn),此外與具體平臺(tái)相關(guān)的部分比如文件存儲(chǔ)也封裝為類,經(jīng)過層層的面向?qū)ο笫降奶幚?
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1