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

正文內容

畢業(yè)設計論文--桌面搜索工具的設計與實現(xiàn)-資料下載頁

2024-12-03 16:31本頁面

【導讀】設計(論文)題目:桌面搜索工具的設計與實現(xiàn)。二○○七年十月制。第二部分外文資料翻譯。第三部分過程管理資料。六、畢業(yè)設計(論文)答辯評審表。Lucene是一個免費、開源、高性能、純Java的搜索引擎包,利用Lucene組件開發(fā)設計。桌面搜索工具,可以很好的實現(xiàn)對個人文檔內容的索引和搜索。第一章為緒論,介紹課題設計的來源、開發(fā)背景、國內外研究現(xiàn)狀,開發(fā)目標、開發(fā)工。具以及軟硬件需求;第二章主要對課題的可行性進行分析,說明了開發(fā)的基本思想路線。和基本的設計方法,以及實現(xiàn)所需的基本功能模塊設計;第三和第四章探討系統(tǒng)的詳細。設計,包括主要的實現(xiàn)技術和方法,和簡單的運行調試過程;第五章介紹系統(tǒng)的簡單測。在最后一章總結了系統(tǒng)在開發(fā)中的具體經(jīng)歷過程以及系統(tǒng)的一些不足。

  

【正文】 ng title = getTitle(rawDoc)。 //調用 getTitle方法獲得 HTML文檔標題的文本類型值,這些文本用于構成 //Lucene的 Document實例。 String body = getBody(rawDoc)。 //調用 getBody方法得到 HTML文檔的正文全文。這些文本也用于構成 Lucene //的 Document的實例。 if ((title != null) amp。amp。 (!())) { (new Field(html_title, title,))。 長沙學院 畢業(yè)設計 (論文 ) 17 //對 HTML文檔的 title進行索引、分詞,并存儲在 html_title域中 } if ((body != null) amp。amp。 (!())) { (new Field(html_body, body,))。 //對 HTML文檔的 body進行索引、分詞,并存儲在 html_body域中 } try { (new Field(filepath, (), ))。 //對 HTML文檔的路徑進行索引、不分詞,并存儲在 filepath域中 (new Field(html_filename,(),))。 //對 HTML文檔的文件名進行索引、分詞,并存儲在 html_filename域中 } catch (IOException e) {()。} return doc。//返回 doc對象給調用的函數(shù) } protected String getTitle(Element rawDoc) //getTitle方法遍歷了 DOM樹,并返回所找到的第一個 title元素的文本值 { if (rawDoc == null) { return null。 } String title = 。 NodeList children = (title)。 if (() 0) { Element titleElement = ((Element) (0))。 //獲取第一個元素。 Text text = (Text) ()。 //獲取第一個元素的文本值。 if (text != null) { title = ()。 } } return title。//返回文本值給調用函數(shù) } protected String getBody(Element rawDoc) 長沙學院 畢業(yè)設計 (論文 ) 18 { if (rawDoc == null) { return null。 } String body = 。 NodeList children = (body)。 //調用標 準的 DOM API接口,得到所有 body元素列表。一般來說,一個、 //HTML文檔只出現(xiàn)一個 body元素。 if (() 0) { body = getText((0))。 //getBody方法調用 getText方法從 HTML文檔讀取所有文本。該方法返回 //body與 /body標簽之前的所有文本。 } return body。 } protected String getText(Node node) //getText是用于提取特定 DOM節(jié)點下所有元素中的方法。 { NodeList children = ()。 StringBuffer sb = new StringBuffer()。 for (int i = 0。 i ()。 i++) { Node child = (i)。 switch (()) { case : (getText(child))。 ( )。 break。 case : (((Text) child).getData())。 break。 } } return ()。 } 單元測試 編寫測試用例 TestHTML類,測試索引 D盤 html文件夾里面的 html文檔,測試結果如 長沙學院 畢業(yè)設計 (論文 ) 19 圖 : 圖 測試解析 HTML格式文檔 經(jīng)過索引,可以發(fā)現(xiàn)索引文件目錄下生成了三個文件,分別為: 、 deletable、segments。 利用 IndexerTest類測試索引后得到的結果,搜索內容為 ”overview”,結果如圖 : 圖 測試搜索 HTML格式文檔 純文本索引 至此,在上述的 doc解析模塊和 html解析模塊中,都看到了對文件建立索引并寫入到doc對象的語句,在經(jīng)過 doc解析和 html解析后,可以使用 Lucene包提供的一些類方便快速的對純文本格式的文檔進行索引,下面將詳細講述其索引的過程。 主要技術、方法 在此桌面搜索工具的實現(xiàn)過程中, Lucene提供的這幾個核心類是需要使用的,通過這幾個類的合理使用,可以達到對于純文本的索引。 1. IndexWriter 這個類用于創(chuàng)建一個新的索引并且把文檔加到已有的索引中去。它可以提供對索引的寫入操作,而讀取或搜索索引需要用其他的類。 2. Directory Directory 類代表一個 Lucene 索引的位置。它是一個抽象類,它的子類 (其中的兩個包含在 Lucene 中 )在合適時存儲索引。 IndexWriter 然后使用 Directory 的一個具體實現(xiàn)FSDirectory,并在文件系統(tǒng)的一個目錄中創(chuàng)建索引。 長沙學院 畢業(yè)設計 (論文 ) 20 在應用程序中, 可以 將 Lucene 索引存儲在磁盤上 , 這時使用 FSDirectory,一個包含文件系統(tǒng)真實文件列表的 Driectory 子類 。 Directory 的 還有個 子類是 RAMDirectory。盡管它提供了與 FSDirectory 相同的接口,RAMDirectory 將它的所有數(shù)據(jù)加載到內存中。 RAMDirectory 可以應用在 快速訪問 索引的情況,不管是索引或搜索。 3. Analyzer 在文本 索引 之前, 需要先通過 Analyzer。 經(jīng)過這個分析階段可以去除文本中的一些空格或者一些停止詞 (指一些很常用、但不能用來幫助區(qū)分文檔的詞 ),對中文則可以切分成有意義的詞組。 Analyzer在 IndexWriter的構造函數(shù)中指定 。 Lucene自帶的兩個中文分析器分別為: ChineseAnalyzer和 CJKAnalyzer。然后還有一些其他的開源分析器可以采用,比如: IK_Canalyzer。在此次設計中,將采用 ChineseAnalyzer進行中分 分詞。 4. Document Lucene里的 Document可以理解為一個虛擬的文檔,可以往 Document里面存或者取大量數(shù)據(jù)。所以在要為每一個檢索到的文本文件創(chuàng)建一個 Document實例,并在實例中添加它的域,最后把要把 Document對象添加到索引中。 5. Field Lucene提供了四種不同類型的域: Keyword域:不要被分析,但是會逐字地被索引并存儲。適合 URL、文件路徑、日期、個人姓名等。 UnIndexed域:既不需要被分析也不進行索引,但是該值同樣被存儲在索引文件中。適合于需要和搜索 結果一起被顯示出來,但用戶不會將它的值直接用于搜索的情形。 UnStored域:與 UnIndexed類型域相反,需要被分析并索引,但不會存儲在索引文件中。適合于網(wǎng)頁的正文或文檔。 Text域:需要被分析且索引。 實現(xiàn)過程 以下給出索引純文本的關鍵實現(xiàn)部分的代碼: public static void main(String[] args) throws Exception { File indexDir=new File(indexDir)。 //建立一個文件夾 indexDir,用于存放索引文件 File dataDir=new File(D:\\dataDir)。 //進行索引的文檔位置 long start=new Date().getTime()。//記錄開始時間 int numIndexed=index(indexDir,dataDir)。//得到索引文件數(shù)目 長沙學院 畢業(yè)設計 (論文 ) 21 long end=new Date().getTime()。//記錄結束時間 } public static int index(File indexDir,File dataDir)throws IOException { if(!()||!()){ throw new IOException(dataDir+does not exist or not a directory)。 } IndexWriter writer=new IndexWriter(indexDir,new ChineseAnalyzer(),true)。 //實例化一個 IndexWriter,指定使用 ChineseAnalyzer分析器 indexDirectory(writer,dataDir)。 int numIndexed=()。 ()。//索引后結果進行優(yōu)化 ()。//關閉 writer return numIndexed。 } private static void indexDirectory(IndexWriter writer,File dir)throws IOException { File[] files=()。 for(int i=0。i。i++) { File f=files[i]。 if(()) { indexDirectory(writer,f)。 //如果文件夾中還有文件夾,進行遞歸,直到找到文件 } else if(().endsWith(.txt)) { indexFile(writer,f)。//傳遞 writer和文件過去進行索引 } } } private static void indexFile(IndexWriter writer,File f)throws IOException { Document doc=new Document()。 //實例化一個 Documents對象 (new Field(body, new FileReader(f)))。 //寫入 doc對象的 body域 (new Field(filepath, (),))。 //寫入 doc對象的 filepath域,進行索引但不分析,進行存儲。 (doc)。 //doc對象寫進 writer } 長沙學院 畢業(yè)設計 (論文 ) 22 單元測試 編寫測試用例 TestText類,測試索引 D盤 dataDir文件夾里面的 text文檔,測試結果如圖 : 圖 測試索引純文本文檔 利用 IndexerTest類測試索引后得到的結果,搜索內容為 ”王敏 ”,結果如圖 : 圖 測試搜索純文本文檔 運行結果 利用文檔解析框架來對硬盤上文件建立索引,運行結果如圖 : 圖 建立索引運行結果 長沙學院 畢業(yè)設計 (論文 ) 23 第四章 文檔搜索 功能 設計 與實現(xiàn) 文檔搜索的實現(xiàn)將設計在瀏覽器上進行,以下選出重要的模塊進行詳細的介紹和分析,下圖為文檔搜索的功能級數(shù)據(jù)流圖: 圖 搜索的功能級數(shù)據(jù)流圖 從用戶角度看,搜索活動的過程如圖 所示: 圖 搜索時的 UML活動圖 索引表 查詢子句 分割后的詞匯集合 查詢結果 中文分詞 語法分析,提取關鍵字集合 查詢關鍵字 關鍵字結合 結果顯示 長沙學院 畢業(yè)設計 (論文 ) 24 搜索框架設計 由于此次設計采用 C/S 設計,用戶搜索在瀏覽器上進行,在后臺服務器 tomcat 的支持下,將采用 struts 框架進行桌面搜索工具的搜索框架設計。
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1