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

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文--桌面搜索工具的設(shè)計(jì)與實(shí)現(xiàn)-閱讀頁(yè)

2024-12-23 16:31本頁(yè)面
  

【正文】 dler接口的類都會(huì)拋出 DocumentHandlerException類型的異常。 所以,在本章中所涉及的解析器都是按下表列出的步驟來編寫的。此外,還將創(chuàng)建一個(gè)實(shí)現(xiàn) FileHandler 接口的 ExtensionFileHandler類。 表 組成文件索引操作框架的 Java 類 Java 類 目的 DocumentHandler 定義 getDocument(InputStream)方法,此方法由所有的文檔解析器實(shí)現(xiàn) DocumentHandlerException 遇到錯(cuò)誤情況時(shí),該類將檢測(cè)所有從文檔解析器拋出的異常 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 11 FileHandler 定義 getDocument(File)方法,該方法由 ExtensionFileHandler 類實(shí)現(xiàn) FileHandlerException 檢測(cè)從實(shí)現(xiàn)了 FileHandler 接口的具體的類中拋出的異常 ExtensionFileHandler 實(shí)現(xiàn) FileHandler 接口的類與實(shí)現(xiàn) DocumentHandler 接口的類具有相同的工作方式,它會(huì)根據(jù)由方法 getDocument(File)傳遞給該實(shí)現(xiàn)類的文件擴(kuò)展名來調(diào)用相應(yīng)的分析器對(duì)不同的文檔進(jìn)行處理 . 主要技術(shù)、方法 經(jīng)過綜合設(shè)計(jì),此文檔解析模塊的大體構(gòu)架可以清晰的得出,下圖展示了構(gòu)成文檔處理框架的各個(gè)組成部分。通過實(shí)例化不同的解析器,既可以索引相應(yīng)文檔。 實(shí)現(xiàn)過程 ExtensionFileHandler的關(guān)鍵部分代碼如下 : private Properties handlerProps。 //Properties實(shí)例將文件擴(kuò)展名映射到能夠解析以這些擴(kuò)展名為后綴的 //件的 DocumentHandler實(shí)現(xiàn)類上。 int dotIndex = (.)。amp。 //為了提取文件擴(kuò)展名,查找文件名中最后一個(gè)點(diǎn)號(hào) (.)的位置,并且獲 //取從該偏移量到文件名末端的所有 字符串。 //得到映射后的對(duì)應(yīng)分析器的類 if (handlerClassName == null) return null。 DocumentHandler handler =(DocumentHandler) ()。 return (new FileInputStream(file),file)。由于建立了文檔解析框架,這里實(shí)現(xiàn)一個(gè)DocumentHandler 接口,用于解析 MS DOC。但是一些開源的項(xiàng)目已經(jīng)給出了一些解決方案。 利用 POI 中的 WordDocument 類可以從一個(gè) Microsoft Word 文檔中提取原文,然后可以使用這段原文來構(gòu)建一個(gè) Lucene 中的 Document 實(shí)例。 API 提供了一個(gè)可以替換 Jakarta POI API 的接口,這使得系統(tǒng)可以從 WORD 文檔中提取文本十分容易。 2. 庫(kù)支持從 Word6/95 中提取文本,而 POI 不支持。 實(shí)現(xiàn)過程 使用 API 很簡(jiǎn)單,關(guān)鍵代碼如下 : public Document getDocument(InputStream is,File file)throws DocumentHandlerException //這里實(shí)現(xiàn)了 DocumentHandler接口中的 getDocument()方法,將 MS Word文檔 //中的InputStream對(duì)象作為參數(shù)傳遞給這個(gè)方法。 try { 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 14 bodyText = new WordExtractor().extractText(is)。 } catch (Exception e) { throw new DocumentHandlerException(Cannot extract text from a Word document,e)。amp。 (new Field(doc_body, bodyText,))。 try { (new Field(filepath, (),))。 (new Field(doc_filename,(),))。 } catch (IOException e) { ()。 //返回解析并索引后的結(jié)果對(duì)象 doc } return null。 利用 IndexerTest類測(cè)試索引后得到的結(jié)果,搜索內(nèi)容為 ”開題 ”,結(jié)果如圖 : 圖 測(cè)試搜索 DOC格式文檔 html 格式解析 了解 Lucene 的用法后,可以知道它所處理的對(duì)象都是純文本數(shù)據(jù),這對(duì)于 html 格式進(jìn)行索引顯然是行不通的,所以必須經(jīng)過一個(gè)解析過程,從 html 頁(yè)面中提取出文本,進(jìn)而再用 Lucene的方法進(jìn)行索引。 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 16 主要技術(shù)、思路 Html 文檔隨處可見,大部分 web 文檔采用的是 html 格式。目前比較常用的解析器為 Jtidy 和 NekoHTML,它們都是可靠的 HTML 解析器,能夠處理格式不規(guī)范的 HTML 文檔。然后使用標(biāo)準(zhǔn)的 DOM API 方法可以得到兩個(gè) HTML 元素的的 文本值 也就是希望索引的文本標(biāo)題和正文元素,即 title 和 body。 { Tidy tidy = new Tidy()。 (false)。 Element rawDoc = ()。 doc =new ()。 //調(diào)用 getTitle方法獲得 HTML文檔標(biāo)題的文本類型值,這些文本用于構(gòu)成 //Lucene的 Document實(shí)例。 //調(diào)用 getBody方法得到 HTML文檔的正文全文。 if ((title != null) amp。 (!())) { (new Field(html_title, title,))。amp。 //對(duì) HTML文檔的 body進(jìn)行索引、分詞,并存儲(chǔ)在 html_body域中 } try { (new Field(filepath, (), ))。 //對(duì) HTML文檔的文件名進(jìn)行索引、分詞,并存儲(chǔ)在 html_filename域中 } catch (IOException e) {()。//返回 doc對(duì)象給調(diào)用的函數(shù) } protected String getTitle(Element rawDoc) //getTitle方法遍歷了 DOM樹,并返回所找到的第一個(gè) title元素的文本值 { if (rawDoc == null) { return null。 NodeList children = (title)。 //獲取第一個(gè)元素。 //獲取第一個(gè)元素的文本值。 } } return title。 } String body = 。 //調(diào)用標(biāo) 準(zhǔn)的 DOM API接口,得到所有 body元素列表。 if (() 0) { body = getText((0))。該方法返回 //body與 /body標(biāo)簽之前的所有文本。 } protected String getText(Node node) //getText是用于提取特定 DOM節(jié)點(diǎn)下所有元素中的方法。 StringBuffer sb = new StringBuffer()。 i ()。 switch (()) { case : (getText(child))。 break。 break。 } 單元測(cè)試 編寫測(cè)試用例 TestHTML類,測(cè)試索引 D盤 html文件夾里面的 html文檔,測(cè)試結(jié)果如 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 19 圖 : 圖 測(cè)試解析 HTML格式文檔 經(jīng)過索引,可以發(fā)現(xiàn)索引文件目錄下生成了三個(gè)文件,分別為: 、 deletable、segments。 主要技術(shù)、方法 在此桌面搜索工具的實(shí)現(xiàn)過程中, Lucene提供的這幾個(gè)核心類是需要使用的,通過這幾個(gè)類的合理使用,可以達(dá)到對(duì)于純文本的索引。它可以提供對(duì)索引的寫入操作,而讀取或搜索索引需要用其他的類。它是一個(gè)抽象類,它的子類 (其中的兩個(gè)包含在 Lucene 中 )在合適時(shí)存儲(chǔ)索引。 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 20 在應(yīng)用程序中, 可以 將 Lucene 索引存儲(chǔ)在磁盤上 , 這時(shí)使用 FSDirectory,一個(gè)包含文件系統(tǒng)真實(shí)文件列表的 Driectory 子類 。盡管它提供了與 FSDirectory 相同的接口,RAMDirectory 將它的所有數(shù)據(jù)加載到內(nèi)存中。 3. Analyzer 在文本 索引 之前, 需要先通過 Analyzer。 Analyzer在 IndexWriter的構(gòu)造函數(shù)中指定 。然后還有一些其他的開源分析器可以采用,比如: IK_Canalyzer。 4. Document Lucene里的 Document可以理解為一個(gè)虛擬的文檔,可以往 Document里面存或者取大量數(shù)據(jù)。 5. Field Lucene提供了四種不同類型的域: Keyword域:不要被分析,但是會(huì)逐字地被索引并存儲(chǔ)。 UnIndexed域:既不需要被分析也不進(jìn)行索引,但是該值同樣被存儲(chǔ)在索引文件中。 UnStored域:與 UnIndexed類型域相反,需要被分析并索引,但不會(huì)存儲(chǔ)在索引文件中。 Text域:需要被分析且索引。 //建立一個(gè)文件夾 indexDir,用于存放索引文件 File dataDir=new File(D:\\dataDir)。//記錄開始時(shí)間 int numIndexed=index(indexDir,dataDir)。//記錄結(jié)束時(shí)間 } public static int index(File indexDir,File dataDir)throws IOException { if(!()||!()){ throw new IOException(dataDir+does not exist or not a directory)。 //實(shí)例化一個(gè) IndexWriter,指定使用 ChineseAnalyzer分析器 indexDirectory(writer,dataDir)。 ()。//關(guān)閉 writer return numIndexed。 for(int i=0。i++) { File f=files[i]。 //如果文件夾中還有文件夾,進(jìn)行遞歸,直到找到文件 } else if(().endsWith(.txt)) { indexFile(writer,f)。 //實(shí)例化一個(gè) Documents對(duì)象 (new Field(body, new FileReader(f)))。 //寫入 doc對(duì)象的 filepath域,進(jìn)行索引但不分析,進(jìn)行存儲(chǔ)。 //doc對(duì)象寫進(jìn) writer } 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 22 單元測(cè)試 編寫測(cè)試用例 TestText類,測(cè)試索引 D盤 dataDir文件夾里面的 text文檔,測(cè)試結(jié)果如圖 : 圖 測(cè)試索引純文本文檔 利用 IndexerTest類測(cè)試索引后得到的結(jié)果,搜索內(nèi)容為 ”王敏 ”,結(jié)果如圖 : 圖 測(cè)試搜索純文本文檔 運(yùn)行結(jié)果 利用文檔解析框架來對(duì)硬盤上文件建立索引,運(yùn)行結(jié)果如圖 : 圖 建立索引運(yùn)行結(jié)果 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 23 第四章 文檔搜索 功能 設(shè)計(jì) 與實(shí)現(xiàn) 文檔搜索的實(shí)現(xiàn)將設(shè)計(jì)在瀏覽器上進(jìn)行,以下選出重要的模塊進(jìn)行詳細(xì)的介紹和分析,下圖為文檔搜索的功能級(jí)數(shù)據(jù)流圖: 圖 搜索的功能級(jí)數(shù)據(jù)流圖 從用戶角度看,搜索活動(dòng)的過程如圖 所示: 圖 搜索時(shí)的 UML活動(dòng)圖 索引表 查詢子句 分割后的詞匯集合 查詢結(jié)果 中文分詞 語(yǔ)法分析,提取關(guān)鍵字集合 查詢關(guān)鍵字 關(guān)鍵字結(jié)合 結(jié)果顯示 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 24 搜索框架設(shè)計(jì) 由于此次設(shè)計(jì)采用 C/S 設(shè)計(jì),用戶搜索在瀏覽器上進(jìn)行,在后臺(tái)服務(wù)器 tomcat 的支持下,將采用 struts 框架進(jìn)行桌面搜索工具的搜索框架
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1