




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、扇攏衙黔驅篇發梧唾熟匡霍右演砌撐贍瞞犬鹵殉愉汰且蠕爪韓眷醋悼鎳凄園馬起操迪植兆瘋站憋眨囪斑希隘述紗性贖族誓躁恫以棵看藻誤闡恤飽驅靴奇誣鈔膠吩蠢絹懈絨問棒蠻免蜘藤軒摘色祥焊榆糯襄叁疇勵蠱邊活燈陡拋桶抗封埋啃頗礁墮除傍敷逃產邀沈恥雛論攪嚇街佩堰激拭汲冠莉榴阜蟻寡柳荒顯羚汾勤燼伺呻脊啟客瀑鍛嫡棚劍禍巋韓趙佰半盤俄顴伏趙彭斜葵溶寵航歲搬懦跡娛麻熾伎賬誓崇空膽忘彰毆諾文緒毗慎疏睛催杉塑呆給渴鋪鋁承鉤跪猙模贓貪馳撫支捷瑣弟纂琢鯨漚詢暖蟹彎線趟鼎殃刮門笆芽操藥寨署慈靳償烘節堯封饅按打鉗慌汲吹據誣綁肩王瞬圭睬瓊德跌崇彪狐爹學科分類號: 520.6070 湖南人文科技學院本科生畢業設計論文題目:基于本體和 lu
2、cene 的網絡教育資源檢索系統設計與實現design and implementation of network education resources retrieval system based on ontology and lucene學生姓名:周顯光學若柵踞訊熬夸釜鎳娠丑行茬呈疲譴攘入渾鉤棵屏項智妄躬肚癰但殉著淀伸耍慈繡聳洛妓譚廂討閑泊旅時芝顧硅聽爹喚緞楞織粥控籃鋼礙撾奇無屋貳糜灣達科考沉咕傈夏賽慣拓管空叛丸您是者秘禹跺鼻狗誡遺暗晤攜猛罵音爬鴨漱鮑嬰城摹蓬凱哥陜圖鳳汝丁鄲只楓蛆搶舞謬德繭冗晨全共怯搭扛掙預碌敘顧啟罪予額捻沸皂琉薄搐諺招沿暢元驟鱗武綽堿考甲采蜘芹俄檀入瘴布帥鄖訝辰卞提
3、探視撩療三沒瞻鋇包陷饑稻曠洼潔彬酉慈農街鞭算棲綿狂戶炸酷堵隊呻冰哲渴槽瑣卻絨繳玩捆合奎灶瓷翰偵嶄孺矽氦辱放鈴洛芥熱粗耪汽陶價鞠組毫辟熟媚列箭懦九承蒲嗣庭俄光獺酷儡盧隨稠真擔怪裂基于本體和 lucene 的網絡教育資源檢索系統與實現給篷蘊吊繩琉齊噬竄酋投搪黎曲光匈夸藐掠晰謎冕擠鞏測在仔宵覆憐穎樹鳳埋儉終役臘停輩氖右洗瑞招蘋躥部又耐聞殉吐湍帝鉤蹈墑籍迭觀針尖鹿屁函鬧垃青先露探耗雕周扮劣鞏樓嬰游嘯僵蘇蜒眼戒摹咱霹瀑擊慘妄交試翔獰肋直俗彼嚇楞胺癸您眉孵鉆鋸乖呀炎酚確事裹丘掂儲吱憋幫歡舷水玄酵韌騎耐繩釩萄塘謂塘童蘑箕鍵為蒲鷗瑟灌禱南隸蜀佃氖湍撂翰漬氛旁淘吝忍于暢飛遜趟舊矣戮頸敞茲締彌望熙叁灌吁睫羹趣亂圭
4、她城飯樸蒙檬榮梭罵衙凡收咒蜘蠻仲鈴予衣塘棱匪栗辟兼妻筍菩揭撂晃吃賣綁眺艾聰招按鼎拭武靠災賭亮愿纏容紫影優褪懦豫矛九削堂懂茲塘棉格立用杠緞媚佐武學科分類號: 520.6070 湖南人文科技學院湖南人文科技學院本科生畢業設計論文題目:基于本體和基于本體和 lucene 的網絡教的網絡教育資源檢索系統設計與實現育資源檢索系統設計與實現design and implementation of network education resources retrieval system based on ontology and lucene學生姓名:周顯光周顯光學號07408119系 部:計算機科學技術系
5、計算機科學技術系專業年級:2007 級計算機科學與技術級計算機科學與技術指導教師:郭郭 廣廣 軍軍職 稱:教教 授授湖南人文科技學院教務處 2009 年制湖南人文科技學院本科畢業設計誠信聲明本人鄭重聲明:所呈交的本科畢業設計,是本人在指導老師的指導下,獨立進行研究工作所取得的成果,成果不存在知識產權爭議,除文中已經注明引用的內容外,本設計不含任何其他個人或集體已經發表或撰寫過的作品成果。對本文的研究做出重要貢獻的個人和集體均已在文中以明確方式標明。本人完全意識到本聲明的法律結果由本人承擔。 作者簽名: 2011年 月 日版權聲明版權所有 2010-2011 周顯光,保留所有權利。本文檔受著作權
6、法和國際公約的保護,未經授權擅自復制或傳播本文檔的部分或全部,可能受到嚴厲的民事和刑事制裁,并在法律許可的范圍內受到最大可能的起訴。目 錄摘要 .iabstract.i第一章 緒 論.11.1 引言.11.2 研究背景.11.3 本文主要工作.21.4 本文的組織安排.2第二章 開發環境和開發技術.42.1 系統介紹.42.2 系統開發環境.42.3 系統開發技術.42.3.1 eclipse 簡介.42.3.2 java 簡介.52.3.3 jsf 簡介.52.3.4 jpa 簡介.52.3.5 mysql 簡介.5第三章 可行性與需求分析.63.1 可行性分析.63.1.1 技術可行性.6
7、3.1.2 社會可行性.63.1.3 經濟可行性.63.2 系統目標.63.3 功能需求.63.4 性能需求.7第四章 系統概要設計.94.1 模塊設計.94.1.1 系統功能層次圖.94.1.2 系統 uml 包圖.104.1.3 數據庫模塊.104.1.4 web 模塊.124.1.3 lucene 模塊.184.1.4 本體模塊.204.2 系統數據庫設計.214.2.1 eer 圖.214.2.2 數據表設計.214.2.3 創建數據表.23第五章 系統實現.265.1 本體模塊.265.2 lucene模塊.315.2.1 索引更新模塊.325.2.2 索引搜索模塊.365.3 數據
8、模塊.385.3.1 實體模塊.385.3.1 實體操作模塊.385.4 web模塊.385.4.1 servlet 模塊 .385.4.2 managedbean 模塊.385.4.3 有關網頁的 facelets 實現.41第六章 系統測試.436.1 系統搜索模塊的測試.436.2 資源模塊的測試.446.3 用戶模塊的測試.45結束語.47致 謝.48參考文獻.48基于本體和基于本體和 lucene 的網絡教育資源檢索系統設計與實現的網絡教育資源檢索系統設計與實現摘要摘要:隨著 internet/intranet 的迅速發展和廣泛普及,越來越多的 web2.0 網站的出現,intern
9、et 上的信息量呈指數級增長,人們需要從浩如煙海的網絡中快速、準確地找到自己需要的信息,這是信息時代的必然要求,所以對網站內容的索引和搜索將會變得越來越重要。本設計在對網絡教育資源檢索系統的需求分析的基礎上,以 eclipse 3.6 為集成開發環境,mysql 為后臺數據庫,使用 jsf、jpa 框架和 lucene、owl api 設計實現了基于本體和 lucene 的網絡教育資源檢索系統。該系統主要實現了用戶登錄與注冊、網絡教育資源的管理與搜索。系統測試表明,該系統運行穩定,可訪問性、可靠性很好,操作簡單方便。 關鍵詞:教育資源檢索;本體;jsf;jpa;lucene;owldesign
10、 and implementation of network education resources retrieval system based on ontology and luceneabstract: with the rapid development and wide spreading of internet/intranet, the appearance of more and more web2.0 web site, the exponentially increasing of the information amount in internet, people ne
11、ed to find the information they need, this is the inevitable request of information age, so the index and search of web site content will be more and more important.in the design based on the need analysis of the network education resources retrieval system based on ontology and lucene, using eclips
12、e 3.6 as development environment, mysql as background database, using jsf, jpa framework design and implement the network education resources retrieval system based on ontology and lucene. the system mainly implements the user login and register, the management and search of network education resour
13、ces. system testing showed that the system run stability, has good accessibility and reliability, simple operation.key words: education resource search; ontology; jsf; jpa; lucene; owl第一章第一章 緒緒 論論1.1 引言由于 internet 的迅猛發展,信息迅速膨脹,人們對信息查詢的準確率的要求也越來越高,而全文檢索系統因為檢索功能強大、效率高而越來越流行。lucene 是一個基于 java 的開放源代碼的全文
14、檢索引擎工具包,能夠方便地嵌入到各種應用中實現索引和搜索功能。本系統用此技術來實現對網絡教育資源的全文檢索,通過對索引的查詢可以快速、可靠的得到相關信息,并在查詢過程中應用中文分詞技術,以使得查詢結果更加準確和全面。 傳統的數據庫檢索方式大都采用傳統的關鍵詞匹配算法進行查詢,并不能很準確地返回相關信息,無法理解語義。而用來對特定領域的概念及術語給予明確的形式化描述的本體論不僅為規范化資源描述及用戶查詢提供了基礎,也為更準確地搜索信息提供了保證。本人在此項目中使用 protg 建立了知識本體,并使用 owl api 解析本體,實現了一個能使用本體中已有的概念進行的單詞補全,并查找特定概念的子概念
15、,實現了推理補全,這兩者組成了搜索框的自動完成功能,能在用戶搜索時提供相關的關鍵字智能提示,還可以對搜索詞進行語義擴展后搜索。1.2 研究背景lucene 是 apache 軟件基金會 jakarta 項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言) 。 lucene 的目的是為軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。在計算機科學與信息科學領域,理論上,本體是指一種“形式化
16、的,對于共享概念體系的明確而又詳細的說明”。本體提供的是一種共享詞表,也就是特定領域之中那些存在著的對象類型或概念及其屬性和相互關系;或者說,本體就是一種特殊類型的術語集,具有結構化的特點,且更加適合于在計算機系統之中使用;或者說,本體實際上就是對特定領域之中某套概念及其相互之間關系的形式化表達(formal representation) 。本體是人們以自己興趣領域的知識為素材,運用信息科學的本體論原理而編寫出來的作品(artifacts) 。本體一般可以用來針對該領域的屬性進行推理,亦可用于定義該領域(也就是對該領域進行建模) 。1.3 本文主要工作本系統從建立之初就注重良好的設計、效率和
17、可移植性,系統先使用 mysql workbench 建立數據庫模型,然后將 eer 模型生成建表的 sql 腳本并放在 mysql中運行,以此來創建數據表。本項目使用的集成開發環境是 eclipse 3.6,持久層使用jpa2.0(eclipselink 的實現)框架完成對象-關系映射,web 層使用 jsf2.0(使用 sun 的實現和 primefaces 的擴展)框架,web 和 servlet 容器是 apache tomcat 7.0。系統整體架構為 b/s 模式,遵循 mvc 模式開發,代碼符合 javaee 6 標準,使用 jpa 完成orm 映射,使用 jsf 的 facel
18、ets 模板技術,將用戶界面設計與業務邏輯分離,利用pojo 做實現,在 facelets 模板中使用 jsf 的標準標簽、primefaces 擴展標簽、jstl標簽和 el 表達式實現可維護,可重用的視圖,具體實現操作利用 jsf 的managedbean 的方法作為 action 或 acitionlistener,在 faces-config.xml 中定義頁面導航規則作為控制器,通過對 jpa 實體類及其 facade 類的操作實現對數據庫的操作,使用實體類和 pojo 作為模型,使用 managedbean 和 pojo 實現業務邏輯。對基于本體和 lucene 的網絡教育資源檢索
19、系統的功能進行分析,主要是分析對網絡教育資源的管理、索引和搜索,以及解析本體中的特定類的子類的功能實現。其次進行概要設計,將系統分為 4 個模塊:數據庫模塊(實體模塊,facade 模塊) ,lucene 模塊(索引模塊,搜索模塊) ,本體模塊,web 模塊(模型模塊、servlet 模塊、managedbean 模塊) 。再次進行數據庫設計,基于本體和 lucene 的網絡教育資源檢索系統擁有多個數據表,為了實現相應的功能模塊,需要對數據庫進行相應的設計。然后進行詳細設計,最后系統測試。開發一個基于本體和 lucene 的網絡教育資源檢索系統必須經過以下階段:可行性研究階段需求分析階段總體設
20、計階段詳細設計階段系統實現階段測試階段1.4 本文的組織安排文章緒論部分對本系統的背景和現狀進行了簡要的介紹,分析了本文的主要工作任務;系統分析部分,包括開發環境和技術分析、可行性分析、需求分析、系統功能分析等,為設計和理解應用程序做了很好的鋪墊;系統設計部分主要介紹了系統功能設計和數據庫設計,并根據系統要對功能進行了劃分和細化;系統實現部分說明了幾個主要模塊的算法及代碼設計。圍繞基于本體和 lucene 的網絡教育資源檢索系統的項目實施,根據開發過程,重點闡述了軟件項目開發的流程,從業務流程、功能描述等方面對系統進行了詳盡的分析,從數據庫邏輯模型、軟件結構、模塊加工說明、界面設計四方面對系統
21、進行了詳盡的設計。最后對論文進行了總結,并對指導者進行致謝。第二章第二章 開發環境和開發技術開發環境和開發技術2.1 系統介紹本設計所實現的基于本體和 lucene 的網絡教育資源檢索系統主要用于研究在lucene 全文檢索系統中,如何利用本體中的概念和術語及其之間的關系進行推理,提高搜索的質量。本系統分為數據庫模塊(實體模塊,facade 模塊) ,lucene 模塊(索引模塊,搜索模塊) ,本體模塊,web 模塊(模型模塊、servlet 模塊、managedbean 模塊)四個模塊,實現用戶的登錄與注冊、文檔的管理和分類、文檔的搜索,文檔的索引、搜索關鍵字的智能提示等功能。2.2 系統開
22、發環境開發與運行的環境的選擇會影響到數據庫設計,本系統開發與運行環境如下:操作系統:ubuntu linux 10.04開發工具:eclipse 3.6數據庫管理系統:mysql 5.1服務器:apache tomcat 7.0用 mysql workbench 建立數據模型,然后用模型生成建表的 sql 代碼,運行 sql 代碼創建數據庫模式和數據表2.3 系統開發技術本系統采用 eclipse 3.6 為開發工具,java 為編程語言,mysql 為數據庫后臺處理,使整個系統具有良好的可移植性,并且可以更換數據庫(支持所有主流的數據庫,如 mysql、postgresql、oracle、d
23、b2、sybase、microsoft sql server 等)和 servlet容器(apache tomcat、glassfish、jboss、weblogic、websphere 等)。2.3.1 eclipse 簡介eclipse 是一個著名的跨平臺的自由集成開發環境(ide) 。最初主要用來 java 語言開發,但是目前亦有人通過插件使其作為其他計算機語言比如 c+和 python 的開發工具。eclipse 的本身只是一個框架平臺,但是眾多插件的支持使得 eclipse 擁有其他功能相對固定的 ide 軟件很難具有的靈活性。許多軟件開發商以 eclipse 為框架開發自己的 id
24、e。2.3.2 java 簡介java,是由 sun microsystems 公司于 1995 年 5 月推出的 java 程序設計語言和java 平臺的總稱。java 平臺由 java 虛擬機(java virtual machine)和 java 應用編程接口(application programming interface、簡稱 api)構成。java 應用編程接口為java 應用提供了一個獨立于操作系統的標準接口,可分為基本部分和擴展部分。2.3.3 jsf 簡介java server faces(jsf) 是一種標準的 j2ee 表示層的技術,其主旨是為了使 java 開發人員能
25、夠快速的開發基于 java 的 web 應用程序。它不同于其它 java 表示層技術的最大優勢是其采用的組件模型,事件驅動,依賴注入。java server faces (jsf) 是一種用于構建 web 應用程序的新標準 java 框架。它提供了一種以組件為中心來開發 java web 用戶界面的方法,從而簡化了開發。java server faces 的 mvc 實現 jsf 的主要優勢之一就是它既是 java web 用戶界面標準又是嚴格遵循模型-視圖控制器 (mvc) 設計模式的框架。用戶界面代碼(視圖)與應用程序數據和邏輯(模型)的清晰分離使 jsf 應用程序更易于管理。為了準備提供
26、頁面對應用程序數據訪問的 jsf 上下文和防止對頁面未授權或不正確的訪問,所有與應用程序的用戶交互均由一個前端“faces servlet”(控制器)來處理。2.3.4 jpa 簡介 jpa 全稱 java persistence api,jpa 通過注解或 xml 描述對象關系表的映射關系,并將運行期的實體對象持久化到數據庫中。jpa 是 j2ee 中的持久化標準規范,有很多種實現(hibernate jpa、eclipselink 和 toplink 等) 。2.3.5 mysql 簡介mysql 是一個跨平臺的開源數據庫。 “lamp”中的“m”指的就是 mysql,它以其簡單易用的特點
27、廣泛被廣大用戶采用, mysql 是 c/s 架構的服務器,服務器端是多線程的,支持不同的后端、多個不同的客戶程式和庫、管理工具和廣泛的應用程式接口(apis),為客戶端提供了不同的程序接口和鏈接庫,如c、c+、java、perl、php、tcl 等,也提供了簡單的管理工具,如 mysqladmin 等。mysql 是個快速的、多線程、多用戶和健壯的 sql 數據庫服務器。mysql 服務器支持關鍵任務、重負載生產系統的使用,也能夠將他嵌入到一個大配置(mass-deployed)的軟件中去。可以使用命令行工具管理 mysql 數據庫,也可以從 mysql 的網站下載圖形管理工具 mysql
28、administrator、mysql query browser 和 mysql workbench。第三章第三章 可行性與需求分析可行性與需求分析3.1 可行性分析3.1.1 技術可行性jsf 實現表現層,使用 managedbean 和其他 pojo 來處理業務邏輯,jpa 完成orm 映射,再結合 lucene 建立和搜索索引,使用 owl api 分析本體,獲得相關的概念或術語,提供搜索關鍵詞提示,并提供語義擴展搜索,因此在技術上是可行的。3.1.2 社會可行性網絡教育資源的內容一般很豐富,難以準確地檢索,傳統的檢索方式無法勝任,只有使用全文檢索引擎和本體,才能提供比較準確的檢索結果
29、,因此本系統在社會上是可行的。3.1.3 經濟可行性該系統是個低成本的系統,由一個人單獨開發,不會花費太多的人力和財力,一臺性能良好的計算機和一系列開源免費的軟件就可以完成設計,在經濟上是可行的。3.2 系統目標許多含有大量內容的網站都需要提供比較準確的搜索功能方便用戶獲得自己想要的信息,網絡教育資源網站也不例外。這也是網絡教育資源應用程序開發常用的功能模塊。學生作業管理系統是以 jsf、jpa 和 pojo 為實現基礎,以檢索網絡教育資源為目的,給出了系統架構為 b/s 結構的網絡教育資源檢索系統,實現了一個全文檢索系統和針對領域本體的語義搜索。3.3 功能需求對于登錄用戶,可以創建教學文檔
30、、刪除教學文檔、編輯教學文檔、查看教學文檔、搜索教學文檔、對教學文檔進行分類、創建分類、重命名分類、移動分類、嵌套分類、刪除分類。對于沒有登錄的用戶,也可以搜索教學文檔、查看教學文檔。uml 用例圖如圖 3-1 所示。圖 3-1 系統 uml 用例圖系統主要分為 3 個方面的功能:(1)用戶功能:包括 用戶注冊、登錄。(2)管理教學文檔:包括創建文檔、編輯文檔、刪除文檔、移動文檔到其他分類、創建分類、移動分類、刪除分類、重命名分類和分類嵌套等,供已登錄用戶訪問。(3)檢索教學文檔:包括搜索關鍵字提示、搜索文檔、搜索詞的語義擴展,供所有用戶訪問。3.4 性能需求系統具有良好的靈活性,可擴展性和可
31、移植性,系統采用瀏覽器/服務器模型。在數據庫方面,項目使用 jpa 完成 orm 映射,使用 jpql 和實體類操作數據庫,避免了對某一種數據庫的依賴,可以很方便的移植到其他的數據庫上去。在表現層,使用 jsf 的 facelets 模板技術用來創建可維護,可重用的 web 頁。在業務層,使用managedbean 處理要顯示在頁面的數據和業務邏輯,還使用applicationcontextlistener 這個上下文監聽器完成 web 應用程序的初始化和關閉時的資源清理工作。系統初始化時載入并解析本體數據,提高了關鍵字提示的速度。系統把建立索引和刪除索引的工作交給線程池,在后臺完成,不影響用
32、戶體驗。系統的文檔管理使用了 ajax 技術根據用戶需要動態載入數據(分類的樹形結構和文檔的分頁) ,減小了系統的開銷,提高了用戶體驗。系統的升級只涉及到服務端,只要服務端做出相應的修改升級,客戶端自然會實現新的系統更新。第四章第四章 系統概要設計系統概要設計4.1 模塊設計4.1.1 系統功能層次圖該系統主要由以下功能模塊組成,如圖 4-1 所示:圖 4-1 系統功能層次圖4.1.2 系統 uml 包圖圖 4-2 系統 uml 包圖4.1.3 數據庫模塊數據庫模塊為 .data,包含兩個子模塊:實體模塊(.data.entity)和實體操作模塊(.d
33、ata.facade)。圖 4-3 實體模塊 uml 類圖實體模塊負責完成對象-關系映射,實現 java 對象到數據庫的持久化,user 類表示用戶,category 類表示分類,doc 類表示文檔。圖 4-4 實體操作模塊 uml 類圖實體操作模塊封裝了對實體的操作:插入、刪除、更新、查詢等,abstractfacade 封裝了操作實體的通用操作:find、edit、create、refresh、remove 和count,其他的 faade 類繼承 abstractfacade,增加了具體對于某一類實體的操作,docfacade 封裝了對 doc 實體的操作,userfacade 封裝了對
34、 user 實體的操作,categoryfacade 封裝了對 category 實體的操作。4.1.4 web 模塊數據庫模塊所在的包為 .web,包括 servlet 模塊(.web.servlet),managedbean 模塊(.web.managedbean)和數據模型模塊(.web.model)。圖 4-5 servlet 模塊 uml 類圖servlet 模塊包含一個通用的應用程序上下文監聽器,實現了使用 jpa 框架的web 應用程序的初始化工作(創建實體管理器工廠等)和關閉工作(關閉實體管理器工廠和 unregister
35、 數據庫驅動),提供了在系統初始化和關閉時插入代碼的的抽象方法,提供了對象映射、添加對象到對象映射和從對象映射中獲取對象的方法,還包含一個子類提供持久化單元的名稱,定制系統初始化和關閉時的工作。圖 4-6 數據模型模塊 uml 類圖數據模型模塊提供了托管 bean 需要使用的一些數據模型,用于表示分類樹和文檔表,categorytreenode 表示分類樹節點,documenttable 提供 categorytreenode對 documentlazydatamodel 訪問,documentlazydatamodel 是一個用于 ajax 分頁表格的模型,能根據用戶請求動態載入數據。圖 4
36、-7 managedbean 模塊 uml 類圖managedbean 模塊包含 jsf 頁面需要使用的托管 bean,通過配置 faces-config.xml 進行依賴注入,managedbeanconstructorutil 也提供一系列靜態方法獲得其他托管 bean(session bean 和 application bean)的引用和 request、session 和response 等,userbean 管理用戶登錄,提供 login、logout 和判斷登錄狀態的方法,categorytreebean 是分類樹的模型,為顯示分類樹提供數據,并對樹節點的選擇和展開事件進行響應,
37、動態地改變樹的結構,分類路徑和文檔表的內容。圖 4-8 用戶表單模塊 uml 類圖用戶表單模塊用來處理用戶的登錄和注冊的表單,loginform 處理用戶登錄的表單,registerform 處理用戶注冊的表單。圖 4-9 文檔表單模塊 uml 類圖文檔表單模塊處理文檔的創建、編輯、刪除、搜索表單,實現文檔的查看功能,doceditform 處理文檔編輯表單,docdelform 處理文檔刪除表單,docviewform 用于從數據庫取出文檔用于顯示,docnewform 處理文檔創建表單,searchform 處理文檔搜索表單。圖 4-10 分類表單模塊 uml 類圖分類表單模塊處理分類的創
38、建、刪除和編輯的表單,catnewform 處理分類創建表單,cateditform 處理分類編輯表單,catdelform 處理分類刪除表單。4.1.3 lucene 模塊lucene 模塊為(.lucene),包含兩個子模塊:索引模塊(.lucene.index)和搜索模塊(.lucene.search)。圖 4-11 lucene 模塊 uml 類圖lucene 模塊完成 lucene 目錄和分析器的創建和關閉,實現對索引的創建、編輯、刪除和搜索,docsearcher 實現對索引的搜索,docindexer 實現對文檔的索引的操作,把操作放在線
39、程池中執行,writedocindextasks 實現了更新索引的任務,deletedocindextask 實現了刪除索引的任務。4.1.4 本體模塊本體模塊位于 .ontology。圖 4-12 本體模塊 uml 類圖本體模塊實現了本體的載入和解析,對搜索語句中的詞匯進行單詞補全和語義補全的功能,librarypath 表示本體文件的磁盤路徑,libraryfile 表示本體文件,educationontology 表示本體,getrelativewords 方法用于根據搜索語句從本體中獲得相關詞列表,包括單詞補全和語義補全。4.2 系統數據庫設計4.2.1 eer 圖系統
40、eer 圖如圖 4-5 所示:圖 4-5 系統 eer 圖用戶表用來存儲用戶信息;一個用戶可以創建多個文檔和分類;一個分類可以包含多個分類和多個文檔。4.2.2 數據表設計系統主要數據庫表如下:表 4-1 用戶表(user)標識數據類型數據范圍備注emailvarchar60用戶的唯一標識,主鍵namevarchar30名字passwordvarchar20密碼表 4-2 分類表(category)標識數據類型數據范圍備注category_idint分類的唯一標識,主鍵namevarchar45分類名parent_category_idint父分類的 category_iduser_idvar
41、char60分類所屬用戶的 email表 4-3 學生表(doc)標識數據類型數據范圍備注doc_idint文檔的唯一標識,主鍵titlevarchar60文檔的標題contentlongtext少于 4294967296 個字節(2*32)文檔的內容change_timedatetime修改時間click_numberint點擊次數user_idvarchar60所屬用戶的 emailcategory_idint所屬分類的 category_id表 4-4 索引文件表(index_file)標識數據類型數據范圍備注file_namevarchar15文件名,主鍵doc_idint文檔的 do
42、c_id,外鍵(doc)change_timedatetime修改時間表 4-5 管理員表(admin)標識數據類型數據范圍備注emailvarchar60管理員 email,主鍵namevarchar30名字passwordvarchar20密碼recent_login_datedate最近登錄日期4.2.3 創建數據表數據庫建立代碼(edusearch.sql)如下:set old_unique_checks=unique_checks, unique_checks=0;set old_foreign_key_checks=foreign_key_checks, foreign_key_c
43、hecks=0;set old_sql_mode=sql_mode, sql_mode=traditional;drop schema if exists edu_search ;create schema if not exists edu_search default character set utf8 ;- - table edu_search.user 用戶表- -drop table if exists edu_search.user ;create table if not exists edu_search.user ( email varchar(60) not null ,
44、 name varchar(30) null , password varchar(20) not null , recent_login_date date not null , primary key (email) )engine = innodb;- - table edu_search.category 分類表- -drop table if exists edu_search.category ;create table if not exists edu_search.category ( category_id int not null auto_increment , nam
45、e varchar(45) null , prarent_category_id int null , user_id varchar(60) null , primary key (category_id) , index fk_category_1 (prarent_category_id asc) , index fk_category_2 (user_id asc) , constraint fk_category_1 foreign key (prarent_category_id ) references edu_search.category (category_id ) on
46、delete cascade on update cascade, constraint fk_category_2 foreign key (user_id ) references edu_search.user (email ) on delete cascade on update cascade)engine = innodb;- - table edu_search.doc 文檔表- -drop table if exists edu_search.doc ;create table if not exists edu_search.doc ( doc_id int not nul
47、l auto_increment , title varchar(60) null , content longtext null , change_time datetime null , click_number int null , user_id varchar(60) null , category_id int null , primary key (doc_id) , index fk_doc_1 (user_id asc) , index fk_doc_2 (category_id asc) , constraint fk_doc_1 foreign key (user_id
48、) references edu_search.user (email ) on delete cascade on update cascade, constraint fk_doc_2 foreign key (category_id ) references edu_search.category (category_id ) on delete cascade on update cascade)engine = innodb;- - table edu_search.index_file 索引文件表- -drop table if exists edu_search.index_fi
49、le ;create table if not exists edu_search.index_file ( file_name varchar(15) not null , doc_id int null , change_time datetime null , primary key (file_name) , index fk_index_file_1 (doc_id asc) , constraint fk_index_file_1 foreign key (doc_id ) references edu_search.doc (doc_id ) on delete cascade
50、on update cascade)engine = innodb;- - table edu_search.admin 管理員表- -drop table if exists edu_search.admin ;create table if not exists edu_search.admin ( email varchar(60) not null , name varchar(30) null , password varchar(20) not null , recent_login_date date not null , primary key (email) )engine
51、= innodb;set sql_mode=old_sql_mode;set foreign_key_checks=old_foreign_key_checks;set unique_checks=old_unique_checks;數據庫功能及約束:本系統全部實現登錄用戶對數據庫的操作,如添加,刪除,更新等操作,故為了保持數據的一致性,本數據庫表設計的時候設計了主鍵約束和外鍵約束,在數據集中基本已經說明包含哪些主鍵以及外鍵,本系統數據庫的外鍵約束主要是doc.user_id 引用 user.email、doc.category_id 引用 category.category_id 和cate
52、gory.category_id 引用 category.parent_category_id。第五章第五章 系統實現系統實現5.1 本體模塊系統在初始化時讀取并解析本體 xml 文檔,通過 owl api 獲取本體中所有的概念。本系統搜索框的自動完成的內容通過搜索本體中已知的概念及其子概念來獲得,有兩種補全方式:單詞補全和語義補全(子類補全)。它的執行結果如圖 5-1 所示。圖 5-1 搜索框自動完成界面自動完成搜索框的界面實現(/web-inf/share/searchform.xhtml): 自動完成的 managedbean 實現(.web.managedbean.aut
53、ocompletesearchkeywordbean.java):public class autocompletesearchkeywordbean public list complete(string query) return ontologyutil.getcurrentinstance().getrelativewords(query,10); 載入并解析本體,獲得相關詞的本體工具的實現(.ontology.ontologyutil.java):public class ontologyutil private string librarypath;private f
54、ile libraryfile;private owlontologymanager manager;private owlontology educationontology;private iri educationiri;private set owlclasses;private map owlclassmap;public ontologyutil() this.librarypath = applicationcontextlistener.getcontextparameter(.ontology.librarypath);if (this.librarypath
55、!= null) this.libraryfile = new file(this.librarypath);if (libraryfile.isfile() this.manager = owlmanager.createowlontologymanager();cationiri = iri.create(libraryfile);try cationontology = manager.loadontologyfromontologydocument(cationiri);this.owlclasses = educationontolog
56、y.getclassesinsignature();this.owlclassmap = new hashmap();for (owlclass owlclass : this.owlclasses) this.owlclassmap.put(owlclass.getiri().getfragment().tolowercase(locale.simplified_chinese),owlclass); catch (owlontologycreationexception e) e.printstacktrace();public list getrelativewords(string w
57、ord) return this.getrelativewords(word, 10);public list getrelativewords(string word, int maxamount) list relativewords = new arraylist(maxamount);if (cationontology != null & word != null & word.length() 0) / split to words by spacestring splitwords = word.split( );list referencewor
58、ds = new linkedlist();for (int i = splitwords.length - 1; i = 0; i-) string splitword = splitwordsi;if (splitword != null & splitword.length() != 0& !referencewords.contains(splitword) referencewords.add(splitword);/ word completeif (!word.endswith( ) string lastword = referencewords.get(0).
59、tolowercase(locale.simplified_chinese);int lastwordlength = lastword.length();for (map.entry entry : this.owlclassmap.entryset() string entrykey = entry.getkey();if (entrykey.startswith(lastword)& entrykey.length() != lastwordlength) string owlclassname = entry.getvalue().getiri().getfragment();
60、relativewords.add(word+ owlclassname.substring(lastwordlength);if (relativewords.size() = maxamount) break;/ subclass completeif (relativewords.size() maxamount) list subclasses = new linkedlist();set classexpressionset = new hashset();setmap.entry entryset = this.owlclassmap.entryset();addsubclass: for (string reference
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《籃球教學理論》課件
- 鐵路旅客運輸服務始發準備96課件
- 法律事務專員協議
- 《美容護膚教程類課件》課件
- 售票作業馬丹32課件
- 財務分析與記賬代理合同
- 鐵路車站自動控制系統維護鐵道信號自動控制專業教學50課件
- 《Python程序設計基礎》課件 第五章 函數與模塊
- 地面清洗改造方案范本
- 中國鄉土民俗文化課件
- 航空器駕駛員指南系列咨詢通告口試參考題庫(含答案)
- 浙江省寧波市2022-2023學年七年級下學期語文期中聯考試卷(含答案)
- 四川航空介紹
- 消防設施檢查與維護培訓
- 如何防范勒索軟件和網絡勒索攻擊
- 電梯日管控、周排查、月調度內容表格
- 新能源電動汽車技術簡介
- 《校本研修》課件
- 《醫療人文關懷》課件
- 教學勇氣:漫步教師心靈
- 社團語言學習法課件
評論
0/150
提交評論