摘要、目錄、正文具體格式_第1頁
摘要、目錄、正文具體格式_第2頁
摘要、目錄、正文具體格式_第3頁
摘要、目錄、正文具體格式_第4頁
摘要、目錄、正文具體格式_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

【摘要】目前擁有眾多用戶的校內(nèi)網(wǎng)提供了一個真實的網(wǎng)絡平臺,供大家結交新友聯(lián)系老友。根據(jù)用戶填寫的學校信息,自動提示用戶可能認識的人,這方面很方便,然而校內(nèi)網(wǎng)缺少一種從好友中進行日志搜索的機制,只能根據(jù)用戶名檢索用戶的日志?;谠L問控制的搜索引擎的設計與實現(xiàn)可以實現(xiàn)權限搜索,此權限搜索可以在用戶的好友中進行日志檢索.并且能夠實現(xiàn)索引的動態(tài)更新,使用戶能夠及時檢索出最新的日志,為用戶更好的交流提供了一條捷徑。可以根據(jù)當前用戶輸入的關鍵字,在用戶的好友范圍內(nèi)進行相關日志搜索,既滿足了用戶需求,有不侵犯非好友的隱私。此系統(tǒng)的核心實現(xiàn)是關系矩陣的運算,通過關系矩陣的運算得出用戶的好友分層表。該系統(tǒng)利用Java語言在MyEclipse平臺上進行開發(fā),采用現(xiàn)有的搜索引擎開發(fā)工具Lucene,使用了struts框架,借助Matlab工具,聯(lián)合SQLSERVER數(shù)據(jù)庫進行開發(fā),采用B/S三層體系結構,將數(shù)據(jù)處理層、業(yè)務邏輯層、用戶表示層清晰分開。該系統(tǒng)能有效地幫助用戶搜索好友日志,以及更新用戶自己的日志信息,提供動態(tài)索引,迅速檢索出新老日志,方便了用戶的交流?!娟P鍵詞】訪問控制;動態(tài)更新;搜索;【寫作提示】摘要以最概括、最簡潔的語詞描述正文重要內(nèi)容的短文,是論文的內(nèi)容不加注釋和評論的簡短陳述,應盡量反映論文的主要信息,內(nèi)容包括研究目的、方法、成果和結論,不含圖表,不加注釋,具有獨立性和完整性,即不閱讀報告、論文的全文,就能獲得必要的信息。摘要的內(nèi)容應包含與報告、論文同等量的主要信息?!緦懽魈崾尽空獔蟮涝膬?nèi)容要點,內(nèi)容詳盡,基本能反映正文主要信息,一般可以代替閱讀正文。摘要并不是文章簡介,即用于指明文獻主題范圍及內(nèi)容梗概的閱讀導言,文章簡介的典型文體是:本文首先概述了……,接著介紹了……,……,最后給出了結論。需要避免這種寫法【寫作提示】中文摘要一般為400字左右。摘要前加黑體“摘要”,并外加“[]”,作為標識。【寫作提示】關鍵詞是反映畢業(yè)論文(設計)主題內(nèi)容的名詞,是供檢索使用的。主題詞條應為通用技術詞匯,不得自造關鍵詞,盡量從《漢語主題詞表》中選用。關鍵詞一般為3—5個,按詞條外延層次(學科目錄分類),由高至低順序排列,關鍵詞之間應以分號隔開。關鍵詞排在摘要正文部分下方。

Abstract:Xiaoneiwhichispopularwithallofus,provideuswithatrueNetworkplatform.Onxiaoneiwecanmakefriendsandcontactwitholdfriendswhomwemaylosecontactwithforalongtime.Accordingtoyourregisterinformation,itcannoticeyouthatyoumayknowsomebody,whichisveryconvenientforus.XiaoneilacksofaMechanismofsearchlogfromfriends,Whilethissystemcanmakeupforthis.Thesystemcanalsorealizeupdatingindexdynamic,whichallowsuserstosearchtheatestlogsintime.Thismechanismprovidesashortcuttointeractwitheachother.earchingkeywordsamonglogsoftheuser’sfriendscanbothsatisfytheuser’demandandprotecttheother’sprivacy.Thecorerealizationofthesystemistheoperatorofthematrix,throughwhichtheuser'sfriendstieredtablecanbegot.Thedevelopingandrunningsoftwareenvironmentischoicedasfollowing:Javaasthedevelopingkit,MyEclipseastheplatform,Luceneasthesearchtool,Strutsastheframwork,MatlabasthetoolandSQLServer2000asthedatabase.ThesearchsystemofaccesscontrolbasedonLuceneAdoptsB/Sthree-tierarchitecture,makingthedataprocessinglayer,businesslogiclayerandresentationlayerareclearlydivided.Thesystemcanbeusedtosearchthelogoftheuser'sfriend'sandtoupdatetheuser'slog.Itcanalsoupdatetheindexdynamic,souserscanbeallowedtorapidlysearchoutthelatestlog,whichisconvenienttous.Keywords:Accesscontrol;Dynamicupdate;Search;Lucene【寫作提示】英文摘要、關鍵詞,內(nèi)容、格式與中文完全一致。英文摘要、關鍵詞前用加粗的“Abstract”和“Keywords”作為標識?!緦懽魈崾尽坑捎诒磉_上的差異,英文摘要并不一定逐句直譯中文摘要。即使使用了機器翻譯工具,也請自己再從用詞、語法方面進行把關,不能將你的工作質(zhì)量完全交給機器。目錄TOC\o"1-3"\h\u1緒論 11.1本課題的研究意義及必要性 11.2相關領域國內(nèi)外應用的現(xiàn)狀及發(fā)展趨勢 21.3Lucene中索引建立原理 32系統(tǒng)分析 52.1系統(tǒng)功能要求 52.2系統(tǒng)開發(fā)功能 52.3系統(tǒng)的可行性分析 63總體設計 73.1功能模塊劃分 73.2系統(tǒng)模塊設計圖 83.3系統(tǒng)流程圖 83.4開發(fā)工具和開發(fā)框架介紹 83.4.1Lucene介紹 83.4.2MATLAB介紹 103.4.3Struts框架介紹 104詳細設計 124.1各模塊的功能 124.1.1索引模塊 124.1.2檢索模塊 134.1.3前臺模塊 174.2系統(tǒng)數(shù)據(jù)庫的設計 184.2.1數(shù)據(jù)庫表的結構 184.2.2數(shù)據(jù)庫選擇及理由 195系統(tǒng)實現(xiàn) 205.1核心模塊實現(xiàn) 205.1.1索引模塊的實現(xiàn) 205.1.2數(shù)據(jù)導入導出 216綜合測試 236.1簡單功能實現(xiàn) 236.1.1登錄和注冊界面 236.1.2我的日志界面 236.2搜索功能實現(xiàn) 246.2.1檢索有關界面 24結束語 28致謝 29參考文獻 30附錄A部分代碼 32【寫作提示】上面的目錄是由word自動生成的。前提是,你需要將正文中的各級標題的樣式選擇為“標題1”、“標題2”或“標題3”。當你編輯好你的正文后,在前面的目錄中點擊右鍵,選擇“更新域”->“更新整個目錄”->“確定”。這樣做既省事,又能保證不會產(chǎn)生編輯錯誤。另外,還便于在編輯中通過“視圖”菜單->“文檔結構圖”,在編輯中查看到整個文檔的結構?!緦懽魈崾尽勘A暨@一段后面的分節(jié)符,以保證正文開始頁碼是1。建議編輯時,按下“常用”工具欄中的“顯示/隱藏編輯按鈕”,使分頁、分節(jié)等編輯符號可見(打印時不會出現(xiàn)),這樣有助于編輯工作的進行?!緦懽魈崾尽扛兄x你響應“低碳”號召而選擇“雙面打印”。如果“雙面打印”,請在“文件”菜單中,單擊“頁面設置”命令;單擊“頁邊距”選項卡,在“多頁”后的框中,單擊“對稱頁邊距”,確定“內(nèi)側”為2.5厘米和“外側”為2厘米。這樣在雙面打印時,正面和反面的頁邊距可以對應起來。另外,如果你的目錄頁不到1頁,請在此處通過插入分頁符,以保證第1章總是從正面開始的(翻一下任何一本書,沒有正文第1頁是從反面開始的。)煙臺大學文經(jīng)學院畢業(yè)論文(設計)1緒論1.1本課題的研究意義及必要性【寫作提示】正文主體是論文的主要組成部分。要求層次清楚,文字簡練,通順,重點突出。論文主體的題序層次是保證文章結構清晰、綱目分明的編輯手段,必須符合學術規(guī)范要求,并前后統(tǒng)一,不得混雜使用。我們所用的題題序層次為:(1)第一層次(章)題序和標題居中放置,其余各層次(節(jié)、條、款)題序和標題一律沿版面左側邊線頂格安排。(2)第一層次(章)題序和標題距下文雙倍行距。第一層次(章)題序和標題用小二號黑體字。題序和標題之間空兩個字,不加標點,下同。第二層次(節(jié))題序和標題用小三號黑體字。第三層次(條)題序和標題用四號黑體字。第四層次及以下各層次題序及標題一律用小四號黑體字。(3)結論(或結束語)作為單獨一章排列,但標題前不加“第X章”字樣。結論是整個論文的總結,應以簡練的文字說明論文所做的工作,一般不超過兩頁。【寫作提示】上面第1章和第1.1節(jié)的樣式已經(jīng)分別設置為“標題1”、“標題2”,這是自動生成目錄,以及使用“文檔結構圖”的基礎。這樣做的好處還在于簡化排版、利于保持一致性等?!緦懽魈崾尽空挠盟误w小四號字,行間距18磅;最簡單的方法是,如果某段不符合上述要求,用“常用”工具欄中的“格式刷”,“刷”一下所要排版的段落即可?!緦懽魈崾尽烤w論是綜合評述前人工作,說明論文工作的選題目的和意義,國內(nèi)外文獻綜述,以及論文所要研究的內(nèi)容?!緦懽魈崾尽炕ヂ?lián)網(wǎng)時代不免要從網(wǎng)絡及電子書中“粘貼”一些文字來。注意復制來的文字要通過參考文獻注明出處,引用太過份就是抄襲了,后果很嚴重。粘貼來的文字是搞亂版式的罪魁禍首之一,建議一個技巧:將復制來的文字先粘貼到記事本中,去除所有的格式信息,再復制、粘貼到Word中來。WPS和高版本的Word也提供了不帶格式的粘貼,值得一用,免除后患。隨著信息科學的進步和互聯(lián)網(wǎng)絡的發(fā)展,網(wǎng)絡信息資源越來越豐富,網(wǎng)上信息呈爆炸性增長。面對無序、極其龐大的信息世界和成千上萬的超級鏈接,要在如此浩瀚的信息網(wǎng)絡空間里快速、準確、經(jīng)濟地查找到所需要的信息,就像“大海撈針”一樣困難。搜索引擎則是解決這一難題的最佳途徑。搜索引擎,從字面上講,“搜索”是想辦法搜尋,“引擎”意為“力大無比的發(fā)動機”。它是指因特網(wǎng)上專門提供查詢服務的一類網(wǎng)站,是一種利用網(wǎng)絡自動搜索技術,對因特網(wǎng)各種信息資源分門別類地進行標引建庫,能夠對檢索者提出的各種檢索查詢做出響應的強有力的檢索工具。它是為滿足人們對網(wǎng)絡信息搜索需求應運而生的網(wǎng)絡工具,既是互聯(lián)網(wǎng)信息查詢的導航針,也是溝通用戶與網(wǎng)絡信息的重要橋梁。校內(nèi)網(wǎng)是目前網(wǎng)絡上存在的一個真實的網(wǎng)絡。它是一個真實的社交平臺。在這個平臺上,用戶不僅可以尋找自己的同學、朋友或是同事,還可以結識新的朋友,并把他們設置成為自己的好友。因此在校內(nèi)網(wǎng)上,用戶與用戶之間具有一個很復雜的關系網(wǎng)。對于單個用戶來講,每個用戶又有一個自己的好友關系網(wǎng)。校內(nèi)網(wǎng)為用戶提供了發(fā)表日志的功能,使得在校內(nèi)網(wǎng)這個平臺上存在著大量的日志信息。而校內(nèi)網(wǎng)的開發(fā)者為用戶提供的搜索功能是以單個用戶為單位的,也就是用戶想查看另一個用戶的日志,只能是先搜索到該用戶,進入到該用戶的頁面,然后才能瀏覽該用戶的日志信息。實際上,像這樣的搜索日志的搜索引擎,用戶沒有主動權。用戶只能是被動瀏覽其他用戶的日志信息,即,另一個用戶的頁面上有哪些日志,該用戶就瀏覽這些日志。而用戶如果想要查看與某一關鍵字相關的一組日志,可見校內(nèi)網(wǎng)上的搜索引擎是很難為用戶實現(xiàn)這個功能的。于是我們設計了一個與校內(nèi)網(wǎng)搜索功能不同的搜索引擎。該搜索引擎打破了以單個用戶為單位這個局限,可以使用戶直接輸入關鍵字進行檢索相關的日志。不過,用戶并不是可以檢索到所有存在在校內(nèi)網(wǎng)上的相關日志,而是只可在自己的好友關系網(wǎng)內(nèi)檢索相關的日志。通過用戶的好友關系來限定用戶的檢索范圍,控制了用戶的訪問權限。1.2相關領域國內(nèi)外應用的現(xiàn)狀及發(fā)展趨勢從出現(xiàn)第一個搜索引擎至今,搜索引擎技術已獲得了飛速的發(fā)展,現(xiàn)在的搜索引擎功能越來越強大,提供的服務也越來越全面,它們的目標不僅僅是提供單純的查詢功能,而是把自己發(fā)展成為用戶首選的Internet入口站點。國內(nèi)的搜索引擎大都是基于中文的搜索引擎,中文搜索引擎是以網(wǎng)絡上的中文信息為主要對象,提供信息的自動收集、過濾、索引和檢索導航等服務的搜索引擎。根據(jù)是否采用詞語切分技術,中文搜索引擎可分為基于字的搜索引擎和基于詞的搜索引擎?;谧值乃阉饕鎸⑽恼轮械拿恳粋€漢字都錄入到索引庫中,用戶的檢索提問根據(jù)單漢字匹配的原則去檢索,此法的優(yōu)點是能夠保證很高的查全率,但查準率低;基于詞的搜索引擎則是按詞建庫,當然這種詞語是按一定的規(guī)則與方法對文章切詞得來的,其優(yōu)點是擁有較高的查準率,用戶檢索時往往能一次命中,缺點是對切詞技術要求高。與國外搜索引擎相比,國內(nèi)搜索引擎起步較晚。由于中文信息處理較英文信息更為復雜,中文搜索引擎的研制也是最近幾年剛剛興起,但其發(fā)展卻十分迅速。目前國內(nèi)常用的搜索引擎有Google,百度,中國搜索,Yahoo搜索,Sogou等。目前搜索引擎處于高速發(fā)展的階段,其總體的發(fā)展趨向如圖1.1所示?!緦懽魈崾尽看颂幊霈F(xiàn)了本文中的第一張圖。插圖要精選。圖序逐章單獨編序(如第1章5個圖,編號為圖1.1到圖1.5;第2章4個圖,編號為圖2.1到圖2.4),依此類推。某章僅有一圖時,也要寫清圖序。由若干個分圖組成的插圖,分圖用a,b,c,……標出。每一圖都要有圖標題,圖序和圖標題置于圖下方中間位置,圖序和圖標題中間要有兩個空格?!緦懽魈崾尽坑袝r候圖的位置不當可能會使某頁下端留下大片空白。如果出現(xiàn)這種情況,可以適當調(diào)整圖和文字的相對位置,即:并不一定要“如圖1.1”后馬上出現(xiàn)圖,只要在附近,便于讀者看到就行。圖序、標題一定要在圖下方,且在同一頁。圖1.1搜索引擎的發(fā)展趨向【寫作提示】圖中文字的字號要比正文中字號小半號,例如,正文中的文字用小四號,圖中的文字用五號字。每幅圖在正文中均應明確提及,例:圖1.3中所示、(見圖1.3)等。大多數(shù)時候,在正文中需要用文字對圖進行簡要說明。為用戶提供了一個真正個性化、智能化的網(wǎng)絡工具,是目前搜索引擎的發(fā)展趨勢。它可以通過自然語言與用戶交互。采取諸如語義網(wǎng)絡等智能技術,通過漢語分詞、句法分析以及統(tǒng)計理論有效地理解用戶的請求,甚至能體會出用戶的弦外之音,最大限度地了解用戶的需求。智能檢索可以從兩個層面上進行理解:一是搜索引擎檢索技術的智能化。二是搜索引擎面向檢索者的智能化。通過這兩個方面的結合可以改進搜索引擎的檢索質(zhì)量。促進搜索引擎的本土化、結構化、個性化,個性化搜索是將搜索建立在個性化的搜索環(huán)境之上,通過對用戶的不斷了解、分析,使得個性化搜索更符合每個人的需求;結構化搜索是指充分利用XML等技術使信息結構化,同時使查詢結構化,從而使搜索的準確度大大提高;本土化搜索是指搜索引擎的搜索要符合當?shù)赜脩舻男枨???傊?,搜索引擎今后的發(fā)展趨勢是從單一查詢工具向綜合化、全功能服務發(fā)展;分類主題一體化,檢索語言向自然語言發(fā)展;查詢智能化;檢索搜索規(guī)則趨于統(tǒng)一;采取多種措施提高查全率和查準率;檢與索的界限將消失;向多國化和多語種化發(fā)展??傊窈蟮乃阉饕鎸臃奖憷?,用戶將有更多的選擇,可以根據(jù)需要擴大或縮小檢索范圍;有輔助檢索工具,如主題詞表,利用它進行交互式提問;可以幫助用戶選擇檢索表達式,確定檢索范圍;除了被動地接受用戶的查詢請求外,搜索引擎也可以利用智能代理技術進行主動的信息檢索;可根據(jù)用戶事先定義的信息檢索要求,在網(wǎng)絡上隨時監(jiān)視信息源,如指定的網(wǎng)頁、新聞組、電子郵件、數(shù)據(jù)庫信息的變化等,并將用戶所需的信息通過Push技術、電子郵件或其他方式,主動提供給用戶,用戶無須反復地搜索所需信息,大大減少了用戶的檢索時間。近年來國外一些網(wǎng)絡企業(yè)也開始瞄準中國互聯(lián)網(wǎng)這一潛在的巨大市場,先后推出了一些文版的搜索引擎。1.3Lucene中索引建立原理【寫作提示】有些同學在標題行后愿意加標點,如“1.3Lucene中索引建立原理?!被颉?.3Lucene中索引建立原理:”。這是不合規(guī)范要求的。注意:標題行后不加任何標點。索引建立過程是搜索系統(tǒng)的核心部分之一。索引建立過程是將普通的文檔形式轉化為倒排表,并存儲成倒排文件的過程。普通文檔集合用Doc->Term1,Term2,Term3...這種形式描述,Doc表示文檔信息,Term認為是不可再進行切分的關鍵詞,而倒排表,則是用Term1->Doc,Term2->Doc,Term3->Doc...這種形式描述的,考慮到關鍵字在標題和內(nèi)容中出現(xiàn)時體現(xiàn)得重要性應該不同,所以在建立索引時,可以賦予標題閾值更大一些。索引過程中最重要的一個階段是文檔的倒排。因為它負責調(diào)用底層分析器的接口,來對數(shù)據(jù)源進行分析,并統(tǒng)計詞條的位置和頻率信息,創(chuàng)建出倒排文件。記錄詞條的位置信息是為快速查找詞條服務的,而記錄詞條的頻率信息是為設定文檔的權重服務的,而權重又是排序的依據(jù)。索引建立過程如圖1.2所示。原始文檔原始文檔分詞處理原始文檔Doc1->Content1Doc2->Content2正排表Doc1Term1,Term2,Term3,Term4去掉停止詞倒排表Term1->Doc1,Score1Term2->Doc2,Score2內(nèi)存中的倒排表Term1->File1,StartPos1,Offset1Term2->File2,StartPos2,Offset2倒排文件Doc1Score1Doc2Score2停止詞“的”“是”“而且”“但是”“the”“a”圖1.2索引的過程【寫作提示】用word做圖后,將圖文框等組合起來,將其環(huán)繞方式設為“上下型”。這將有助于消除圖片“亂竄”的可惡現(xiàn)象?!緦懽魈崾尽恳_始下一章了,插入一個“分頁符”。這樣做的原因有:(1)每一章從新的一頁開始,這是學術規(guī)范的要求。(2)分若干空行也能讓下一章從新的一頁開始,但如果在之前增加或減少一些文字后,你將不得不……(你能想到由此帶來的麻煩?。?/p>

2系統(tǒng)分析2.1系統(tǒng)功能要求本課題旨在開發(fā)一個與校內(nèi)網(wǎng)上提供的搜索引擎不同的搜索引擎,該搜索引擎允許用戶直接輸入關鍵字進行檢索相關的日志。為使用戶能方便、高效、快捷地檢索日志信息,該搜索引擎不僅為提供了簡單檢索的功能,還為用戶提供了高級檢索的功能,用戶輸入想要查找的人的用戶名,就可以搜索出此用戶好友范圍內(nèi)的所有使用此用戶名的人的日志。因為校內(nèi)網(wǎng)是一真實的網(wǎng)絡平臺,為了不破壞其中的資源,我們以校內(nèi)網(wǎng)為背景,模擬了一個校內(nèi)網(wǎng)數(shù)據(jù)庫資源。數(shù)據(jù)庫中存有用戶的信息、用戶之間的好友關系網(wǎng)和用戶發(fā)表的日志信息。為更好地體現(xiàn)搜索引擎的功能,我們把搜索引擎運用到一個實際的系統(tǒng)中。用戶可以注冊到該系統(tǒng)上,然后登錄該系統(tǒng)。登錄成功之后,用戶可查看自己的日志信息,并可發(fā)表新的日志、編輯日志和刪除日志。如果用戶想查看某一組相關的日志,用戶可利用該搜索引擎進行簡單檢索或是高級檢索,該系統(tǒng)會把相關的日志信息友好地顯示給用戶。由于每位用戶都有自己的好友關系網(wǎng),因此用戶利用搜索引擎檢索到的日志信息并不是所有存在校內(nèi)網(wǎng)上的跟關鍵字相關的日志,而是從用戶的好友發(fā)表的日志中檢索出來的與關鍵字相關的日志。如果兩個用戶之間沒有直接或是間接的好友關系,那么這兩個用戶就不能相互查看對方的日志信息。也就是對于不同的用戶來講,如果利用相同的關鍵字進行檢索,檢索到的結果是不相同的。檢索到的結果與用戶的好友關系網(wǎng)緊密相關。2.2系統(tǒng)開發(fā)功能因為校內(nèi)網(wǎng)是一個保存用戶信息的網(wǎng)絡,其內(nèi)在機制使其不能像其他網(wǎng)頁一樣可以通過網(wǎng)絡爬蟲進行頁面收集,而本系統(tǒng)要想達到基于權限的搜索這個目的,必須獲取用戶信息,由于要引用第三方網(wǎng)站的大量信息,這需要得到網(wǎng)站的授權,況且這些信息都是用戶的隱私信息,校內(nèi)網(wǎng)系統(tǒng)不可能允許我們獲取,最終決定模擬這樣一個校內(nèi)網(wǎng)系統(tǒng),建立一個數(shù)據(jù)庫來存儲模擬的信息,并把搜索引擎運建立在該系統(tǒng)之內(nèi),模擬成一個校內(nèi)網(wǎng)。因此該系統(tǒng)要實現(xiàn)的功能有:(1)數(shù)據(jù)庫的設計數(shù)據(jù)庫包括注冊用戶的資料、用戶之間的關系和用戶發(fā)表的日志。(2)實現(xiàn)動態(tài)索引[3]為提高檢索的效率,要為用戶發(fā)表的日志創(chuàng)建索引。用戶會不斷地更新自己的日志信息,因此索引要進行動態(tài)的變化,才能滿足用戶高效檢索的需要。(3)實現(xiàn)簡單檢索和高級檢索用戶直接輸入關鍵字進行檢索可利用簡單檢索功能。若是要檢索的結果更精確,比如要求檢索某個人的日志,則可利用高級檢索功能。(4)前臺設計前臺主要是作為用戶顯示檢索結果之用的。不僅如此,前臺還包括用戶的注冊、登錄和更新自己的日志信息等其他設計。2.3系統(tǒng)的可行性分析目前,在校內(nèi)網(wǎng)用戶只能是被動地去瀏覽其他用戶的日志信息,而不能主動去檢索自己所需的日志信息,因此本系統(tǒng)的開發(fā)是很有必要的。因此本課題采用java作為開發(fā)語言,在MyEclipse5.5環(huán)境下進行開發(fā)。java是一種面向對象的新一代編程語言,具有簡單、安全、穩(wěn)定、可靠、跨平臺等優(yōu)點,可在各種不同機器、操作系統(tǒng)的環(huán)境下進行開發(fā),同時具有解釋型語言和編譯型語言的特性。Java的諸多優(yōu)點使得它非常適合于Web應用程序設計。而Lucene具有良好的可擴展性能,允許我們根據(jù)需要在其提供的板塊上進行擴展來滿足各自不同的需求,因此本系統(tǒng)中的搜索引擎是在Lucene包的基礎上實現(xiàn)的。其中為用戶的日志創(chuàng)建索引是利用Lucene的索引功能實現(xiàn)。檢索部分是對Lucene檢索部分的擴展,比如對Lucene默認的評分機制進行了改進、對Lucene中提供的查詢方式按需進行了重組、使用了Lucene最新的中文分詞方法等。在實現(xiàn)檢索功能時要考慮用戶的好友關系,根據(jù)用戶的好友關系來確定檢索的范圍。

3總體設計3.1功能模塊劃分根據(jù)該系統(tǒng)的實際需要,實現(xiàn)起來大致可分為以下幾個方面:(1)創(chuàng)建主索引此部分主要負責對數(shù)據(jù)庫中已經(jīng)存在的日志建立主索引。(2)創(chuàng)建附加索引對于用戶新發(fā)表的日志需要先插入數(shù)據(jù)庫,成功后需要為日志建立索引,而主索引龐大不易更改,此處的將新日志添加到附加索引中,當附加 索引中的文檔數(shù)目達到一定值時將與主索引進行合并。(3)檢索功能此部分主要有兩個方法,根據(jù)用戶輸入關鍵字進行檢索和根據(jù)用戶輸入的好友名進行檢索。二者都要考慮用戶的好友分層表。(4)結果處理和顯示把檢索的結果經(jīng)評分機制處理后友好的地顯示給用戶。(5)用戶注冊、登錄和更新自己的的日志信息。(6)數(shù)據(jù)庫的設計基于Lucene的訪問控制搜索系統(tǒng)基于Lucene的訪問控制搜索系統(tǒng)索引的實現(xiàn)檢索的實現(xiàn)前臺設計主索引的實現(xiàn)附加索引的實現(xiàn)輸入語句的解析好友層次表的生成用戶更新日志用戶登錄注冊檢索結果的顯示評分機制的改進圖3.1系統(tǒng)模塊圖3.2系統(tǒng)模塊設計圖根據(jù)以上功能模塊的劃分,可得出系統(tǒng)的模塊設計圖,如圖3.1所示。索引實現(xiàn)部分,其中主索引的實現(xiàn)模塊負責對數(shù)據(jù)庫中已經(jīng)存在的日志信息建立索引,建立主索引的倒排表,所建立的主索引文件會很龐大。附加倒排索引主要是對用戶新插入的日志信息進行索引,建立倒排表,當附加索引表中文件的數(shù)目達到一定值時,自動與主索引合并,然后清空附加索引,這樣做主要是為了實現(xiàn)動態(tài)索引,因為動態(tài)索引文件小,添加和刪除比主索引方便的多。檢索實現(xiàn)部分,其中的輸入語句解析負責對用戶輸入的字符串進行解析,得出關鍵字,為下一步的檢索做好準備,好友層次表的生成模塊主要負責根據(jù)不同的用戶得出他的三層好友列表。為要進行的檢索提供范圍。評分機制的改進主要是考慮用戶的好友所在的層次,根據(jù)層次不同給予不同的因子,使得好用關系可以體現(xiàn)出來。前臺設計部分,用戶注冊之后才可以登錄,登錄之后用戶可以對自己的日志進行查看,和編輯,即增刪改,并且可以立即查看編輯后的結果。檢索結果的顯示負責把處理后的結果交給前臺,由前臺按照需要顯示出來。3.3系統(tǒng)流程圖系統(tǒng)的整個流程是這樣的:用戶首先注冊,在登錄成功后進入檢索界面,同時,服務器根據(jù)用戶登錄時的id號,調(diào)用函數(shù)得到用戶的好友分層表,當用戶輸入要檢索的字符串時,首先由lucene分詞器進行分詞,得到要檢索的關鍵字,然后結合用戶的好友分層表得到檢索項,首先判斷附加倒排索引中是否有記錄,如果有,先到附加倒排索引中檢索,后到主索引中檢索,否則,直接到主索引中檢索,因為用戶最關心的往往是最新的日志信息,所以首先檢索附加倒排索引,根據(jù)檢索結果得分,結合用戶的好友分層表,為不同層次的好友日志得分乘以一個因子(此因子只與日志的作者層次有關),得到每篇日志的更新分數(shù),再根據(jù)次分數(shù)進行排序,將結果從高分到低分輸出。檢索的流程圖如下圖3.2所示。3.4開發(fā)工具和開發(fā)框架介紹3.4.1Lucene介紹Lucene是一個用Java語言編寫的、開源的、高性能可擴展的全文索引引擎工具包,它可以方便的嵌入到各種應用中以實現(xiàn)全文索引/檢索功能。Lucene最基本的搜索工具是IndexSearcher,Lucene主要有兩種搜索方式:一種是默認的搜索,另一種還要對搜索結果進行特定的排序處理。Lucene具有如下優(yōu)點:(1)定義了一個與平臺無關的索引文件格式,使得不同平臺的應用能夠共享建立的索引文件;(2)在傳統(tǒng)全文檢索引擎的倒排索引的基礎上,實現(xiàn)了分塊索引,能夠針對新的文件先建立小文件索引再與原有索引合并,提升了索引速度;圖3.2檢索流程圖(3)設計了獨立于語言和文件格式的文本分析接口,索引器通過接受Token流完成索引文件的創(chuàng)立,用戶擴展新的語言和文件格式,只需要實現(xiàn)文本分析的接口;(4)已經(jīng)默認實現(xiàn)了一套強大的查詢引擎,默認實現(xiàn)了布爾操作、模糊查詢、分組查詢等。3.4.2MATLAB介紹MATLAB是目前流行、應用廣泛的科研計算軟件,強大的數(shù)據(jù)處理能力和豐富的工具箱使其編程極為簡單,提供靈活的程序設計流程、便捷的與其他程序和語言接口的功能,因此也無可爭議的成為當今科學界最具影響力、也最有活力的軟件,在各科研領域發(fā)揮重要的作用。功能強大的MATLAB提供了數(shù)據(jù)庫接口和java接口,能夠處理數(shù)據(jù)庫語言,提供了javabuilderJA編譯器,能夠將.m文件打包后編譯成class包,供java調(diào)用,這樣三者能夠聯(lián)合起來完成我們所需的功能。3.4.3Struts框架介紹Struts是用來建立基于Java的WEB應用的首選框架,它基于MVC設計模式。MVC體系結構包含三種組件,分別是模型組件、視圖組件和控制器組件。(1)模型組件(Model)模型是應用中最重要的一部分,它包含了業(yè)務實體和業(yè)務規(guī)則,負責訪問和更新持久化數(shù)據(jù),提供應用使用的數(shù)據(jù)和服務的接口。所有模型組件應當放在系統(tǒng)中同一位置,有利于維護數(shù)據(jù)的完整性,減少數(shù)據(jù)冗余提高可重用性。模型應該和視圖和控制器之間保持獨立。(2)視圖組件(View)視圖組件用來產(chǎn)生到瀏覽器的應答,通常而言就是簡單的JSP或HTML頁面。不同的系統(tǒng)也可使用不能的視圖技術。Struts視圖主要由JSP網(wǎng)頁構成,并提供Struts標簽和ActionFormBean,提供對國際化、接受用戶輸入表單數(shù)據(jù)、表單驗證和錯誤處理等的支持,使開發(fā)者把精力專注到開發(fā)業(yè)務需求上。MVC框架結構圖如圖3.3所示。圖3.3MVC框架圖控制器組件(Servlet)是一個典型的Servlet,為應用接受請求,管理在模型層和視圖層之間的數(shù)據(jù)流。因此他控制著模型層與視圖層交互的方式??刂破鹘?jīng)常使用幫助器類來代表對特定請求或過程的控制。(3)控制器組件(Controller)MVC體系結構的核心是控制器組件。在MVC體系結構中,中心Servlet稱為控制器(Controller)負責接受應用的所有請求。接著控制器處理這些請求,與模型(Model)共同工作,為視圖(View,通常是JSP)準備任何需要的數(shù)據(jù),并將數(shù)據(jù)轉發(fā)給JSP。然后JSP利用控制器準備的這些數(shù)據(jù)為瀏覽器產(chǎn)生應答。在這種體系結構中,業(yè)務邏輯與表現(xiàn)邏輯彼此分離。業(yè)務代碼與表現(xiàn)代碼的分離,給應用提供了多種多樣的接口,以及優(yōu)秀的代碼復用性。

4詳細設計4.1各模塊的功能此系統(tǒng)由三名同學一起完成,本人主要負責訪問控制檢索部分,其它模塊只做簡單介紹,詳細介紹本人所做部分。最基本的索引建立時這樣的,首先建立檢索域,定義此域的屬性:域名、值、是否存儲、是否索引,以及索引時是否分詞。其次建立document,把所建立的域加入到document中,然后再建立IndexWriter實例,把document加入到IndexWriter中即可。此處采用的是在多個索引上建立多域檢索,多個索引是指主倒排索引和附加倒排索引,多域是指在標題域和內(nèi)容域中同時進行模糊檢索(無論關鍵字在標題還是在內(nèi)容中出現(xiàn),都能夠檢索到)。4.1.1索引模塊(1)為用戶的日志創(chuàng)建主索引假定初始情況系統(tǒng)中存在少量的用戶日志,創(chuàng)建主索引,即是對現(xiàn)存的日志進行分析,創(chuàng)建出索引文件。(2)為用戶更新的日志創(chuàng)建附加索引當數(shù)據(jù)庫中有大量的日志時,每次創(chuàng)建主索引會消耗很長的時間,為提高系統(tǒng)的效率,又采用了附加索引。附加索引的結構與主索引的結構完全相同,因為當附加索引中文檔的數(shù)量達到一定的值時,附加索引要與主索引進行合并。發(fā)表日志:這篇日志插入到數(shù)據(jù)庫中,成功后再在附加索引中為這篇日志建立索引,否則,不在索引中添加此日志信息。刪除日志:把這篇日志從數(shù)據(jù)庫中刪除,刪除成功后根據(jù)返回的日志號從附加索引或主索引中中刪除此日志的索引信息。編輯日志:更新數(shù)據(jù)庫中的這篇日志,對索引來說實質(zhì)是先刪除再添加的過程,從附加索引或主索引中刪除此篇日志的索引,然后為修改之后的日志創(chuàng)建索引,并插入臨時索引表中。圖4.1索引模塊圖(3)索引模塊和用例圖在我的日志模塊中,包括三個子模塊:用戶添加新日志、刪除日志、編輯日志,這三個功能都需要與修改索引文件,主的用例圖如圖4.1所示。4.1.2檢索模塊(1)檢索過程指定檢索文件指定檢索字段指定檢索文件指定檢索字段輸入的檢索詞好友分層表MIK_CAnalyzer分詞器分詞檢索出關鍵字進行檢索返回檢索結果Hits結合分層表,改進評分機制返回最終結果讀取結果條目的內(nèi)容指定要讀取的文檔字段圖4.2檢索過程圖具體地,檢索過程分以下幾步:①形成檢索關鍵字根據(jù)用戶輸入的短語進行分詞,此處采用的是lucene自帶的新型的分詞器IKAnalyzer,它的分析方法是字典分詞,采用正反雙向搜索,它有兩個主類:IK_CAnalyzer和MIK_CAnalyzer,檢索時采用的是后者,前者切詞粒度小,適合用于建立索引時,后者適合用于檢索時,這樣檢索時能切分出的關鍵字一定能在索引中查找到。②生成檢索范圍內(nèi)的分層好友表有以下三種方案可以得到用戶的好友分層表,本人嘗試了后兩種方案:自己建立數(shù)據(jù)結構,來實現(xiàn)稀疏矩陣的乘法?;趫D的廣度優(yōu)先遍歷。優(yōu)點:簡單,缺點:需要多次查詢數(shù)據(jù)庫,效率低,耗時長。借助矩陣運算工具MATLAB??紤]到用戶之間的關系是無向網(wǎng)狀圖,可以表示成一個一個二維矩陣,為提高處理數(shù)據(jù)的效率,在處理用戶的關系時借助了MATLAB軟件。三種算法的比較:圖的廣度優(yōu)先遍歷,實現(xiàn)簡單耗時長,而搜索時間長往往是用戶最不愿忍受的,效率低。自己建立數(shù)據(jù)結構,需要從數(shù)據(jù)庫中的好友表,即二維關系表中抽取數(shù)據(jù)建立好友關系的稀疏矩陣,這個過程必須逐條讀取記錄中的元素,而這個表是相當龐大的,此過程會很耗時,數(shù)據(jù)庫的壓力也會很大,而且每一次用戶登錄都要由服務器運行廣度優(yōu)先遍歷算法,逐個生成其好友層次表,如果訪問人很多,此過程將會帶給服務器很大的壓力,考慮到稀疏矩陣的乘法也不是很容易實現(xiàn),此方案不好。由于用戶之間的好友關系可以表示成一個稀疏矩陣,MATLAB能夠支持稀疏矩陣的存儲和運算,能夠經(jīng)過三次讀取數(shù)據(jù)庫就可以生成稀疏矩陣,且過程相當簡單,其內(nèi)部機制能夠便捷的處理稀疏矩陣的乘法運算,從而可以快捷的生成用戶的好友層次表,并能提供java接口,java可以輕松調(diào)用MATLAB中的函數(shù),得到用戶好友層次表,鑒于MATLAB的種種優(yōu)點,使用MATLAB軟件提高了系統(tǒng)實現(xiàn)的可行性,決定采用第三種方案。③進行檢索,生成初步檢索結果調(diào)用matlab中的函數(shù),根據(jù)用戶的id,得到當前用戶的好友表,將不同層次的好友分層存放。形成根據(jù)好友分層表生成檢索項。根據(jù)前面的關鍵字和好友分層表得到布爾檢索項,在搜引中進行檢索。④檢索結果處理。根據(jù)檢索結果,結合用戶的好友關系表重新對日志的得分乘以不同的因子[6][7],得到結合此用戶好友關系的得分表,據(jù)此進行排序輸出。(2)檢索模塊檢索模塊包括兩大部分:簡單檢索和高級檢索,兩種檢索方式都需要調(diào)用生成好友關系的用例,同時還要使用索引文件,索引模塊的用例圖如圖4.3所示。圖4.3索引模塊用例圖(3)好友分層表的生成矩陣生成算法思想:從登錄者開始,仿照廣度優(yōu)先遍歷思想,如果某個用戶處在多個不同層次上,則取最小層作為此用戶在登錄者好友表中的最終層次。比如A是B的二層好友,也是B的三層好友,則將A歸到B的二層好友矩陣中。按此方法形成用戶的好友層次表。算法證明:MATLAB中形成稀疏鄰接對稱矩陣,結合實際情況,是一個對角線元素全為0的0-1矩陣,因為不存在自反關系(自己與自己是好友),所以對角線上元素全為0,如果兩個人是好友則相應位置置1,否則寫0。以下論證:第n層好友關系,有: (4.1) (4.2)【寫作提示】公式最好用“公式編輯器”或“Mathtype”等工具編寫。公式變量用斜體,矢量、張量、矩陣為斜體加粗?!緦懽魈崾尽空撐闹兄匾幕蛘吆笪闹许氈匦绿峒暗墓綉⑿蛱柌⒓訄A括號,序號逐章編序(如(4.10)),序號排在版面右側,且距右邊距離相等。公式與序號之間不加虛線。其中表示將矩陣對角線元素置0,表示將矩陣非零元素置1,表示矩陣對應元素做乘積,表示矩陣乘法,是第層好友關系鄰接矩陣,是處理后(對角線元素全為0的0-1矩陣)的第層好友關系鄰接矩陣(),則。用歸納法證明。當時,由離散數(shù)學知識可知得到二次可達矩陣(其中包括一層和二層都可達的矩陣以及純二層可達矩陣,還有自反關系的矩陣),矩陣中的元素的值代表兩定點之間二次可達的通路數(shù)目,經(jīng)過對角線元素清零,和非零元素置1后的矩陣可以表示一次和二次均可達矩陣和純二次可達的矩陣,再減掉即一次和二次均可達的矩陣,所得即為純二次可達矩陣。當時,假設所得的就是純次可達矩陣。當時,,可以得到次可達矩陣(由矩陣知識可知),且是對角線元素全為0的0-1矩陣,因為表示的是純次可達矩陣,故有,所以只有是不純的,才可能與其它純次可達矩陣有交集,需要的是純的次可達矩陣,所以只需去除與其他矩陣的()交集元素即可。證畢。好友層次表生成過程,即MATLAB在檢索中的作用圖,如圖4.5所示。用戶登錄用戶登錄根據(jù)用戶id,到文件中檢索生成戶的三次好友列表用戶登錄后才做的工作服務器提前做好的工作從數(shù)據(jù)庫relationship表中導入MATLAB成功?形成稀疏矩陣M1進行矩陣運算形成稀疏矩陣M2進行矩陣運算形成稀疏矩陣M3將三個稀疏矩陣存入文件Mk.mat(k=1,2,3)否是開始結束連接數(shù)據(jù)庫根據(jù)用戶輸入的關鍵字檢索并輸出圖4-5檢索中MATLAB的作用【寫作提示】上面“圖4-5”的寫法不合適,按前后文統(tǒng)一的原則,寫成“圖4.5”(4)檢索過程中,各類之間的交互。用戶登錄成功之后,在Java調(diào)用MATLAB中FriendClass類的對象,根據(jù)用戶登錄的id得到用戶的三層好友列表,結果由FriendScope類的對象得到,再經(jīng)過FriendScopeTerm類封裝成檢索term,然后聯(lián)合經(jīng)過分詞后的輸入串,由Search進行檢索,結果由MyHits對象調(diào)用,經(jīng)過getMyHits()函數(shù)參考friendScope對象,得到考慮用戶好友列表后的檢索結果,其時序圖如圖4.6所示。圖4.6檢索過程時序圖4.1.3前臺模塊前臺界面包括基本的用戶注冊、登錄界面,簡單搜索、顯示界面,以及日志管理界面,其中包括日志的增、刪、改,并將引起數(shù)據(jù)庫和索引的同步更新。前臺模塊圖如圖4.7所示。前前臺模塊用戶注冊界面系統(tǒng)登錄界面簡單搜索界面日志管理界面搜索日志顯示界面圖4.7前臺模塊圖用戶首先得在該系統(tǒng)中注冊,然后才能登錄,所以二者之間是include關系,用戶登錄之后可以查看自己的日志,也可以輸入關鍵字來搜索好友的日志。用戶和前臺模塊之間的用例圖如圖4.8所示。圖4.8前臺模塊用例圖4.2系統(tǒng)數(shù)據(jù)庫的設計數(shù)據(jù)庫的設計在本系統(tǒng)中占有很重要的位置。因為數(shù)據(jù)庫是校內(nèi)網(wǎng)場景的體現(xiàn)。為滿足該系統(tǒng)的需要,設計如下面所示的數(shù)據(jù)項和數(shù)據(jù)結構:用戶信息表:用戶號、用戶的郵箱號、用戶名、密碼、用戶注冊時間、用戶所在的學校。日志信息表:日志號、作者、日志標題、日志內(nèi)容、日志的發(fā)表時間。用戶之間的關系表:用戶號、好友的id號、成為好友的時間。4.2.1數(shù)據(jù)庫表的結構(1)用戶信息表表名:userInfo,在該表中保存了用戶注冊的基本資料,數(shù)據(jù)表結構如表4.1所示。表4.1用戶信息表字段名稱數(shù)據(jù)類型字段長度備注useridint4用戶號emailvarchar40用郵箱號進行登錄usernamevarchar40用戶名passwordvarchar40登錄密碼enrolldatedatetime8用戶注冊的時間schoolvarchar40用戶所在的學校【寫作提示】表格是表現(xiàn)力比較強的形式之一,鼓勵在論文中用表格。表格也逐章單獨編序(如表4.1、表5.3)。某章僅有一表時,也要寫清表序“表x.1”。每一個表格都要有表標題,表格序和表格標題置于表格上方中間位置,表格序和表格標題中間要有兩個空格?!緦懽魈崾尽勘碇形淖值淖痔栆日闹凶痔栃“胩?,例如,正文中的文字用小四號,表中的文字用五號字。每張在正文中均應明確提及,例:表1.3中所示、(見表1.3)等?!緦懽魈崾尽咳绻粡埍砀褚珥摃r,請選中表格的表頭行,點擊“表格”菜單,選擇“標題行重復”,可以使表頭在下頁自動出現(xiàn)。這樣做,當版面發(fā)生變化時,表格也自動變化?!緦懽魈崾尽勘砀竦慕Y構應簡潔。表格中各欄都應標注量和相應的單位。表格內(nèi)數(shù)字須上下對齊,相鄰欄內(nèi)的數(shù)值相同時,不能用“同上”、“同左”和其它類似用詞,應一一重新標注。(2)日志信息表表名:logfile,在該表中保存了用戶發(fā)表的日志信息,其數(shù)據(jù)結構如表4.2所示。表4.2日志信息表字段名稱數(shù)據(jù)類型字段長度備注logidint4日志號useridint4作者titlevarchar100日志標題contentvarchar7800日志內(nèi)容timedatetime8發(fā)表日志的時間(3)好友關系表表名:relation,該表體現(xiàn)了校內(nèi)網(wǎng)中用戶之間的好友關系,其數(shù)據(jù)結構如圖4.3所示。表4.3好友關系表字段名稱數(shù)據(jù)類型字段長度備注useridint4用戶號friendidint4好友的id號befriendtimedatetime8用戶之間成為好友的時間4.2.2數(shù)據(jù)庫選擇及理由目前常用的數(shù)據(jù)庫分為超大型、中型和小型數(shù)據(jù)庫三類。其中SQLServer2000屬于超大型的數(shù)據(jù)庫,它能夠為超大型系統(tǒng)所需的數(shù)據(jù)庫提供服務。并且它的安全性能很強,當大型服務器上同時有成千上萬的用戶連接到SQLServer2000實例時,SQLServer2000可以為這些環(huán)境提供保護,它具有自己的安全保護措施。除此之外,SQLServer2000還具有使用方便、可伸縮性好與相關軟件集成度高等優(yōu)點。

5系統(tǒng)實現(xiàn)5.1核心模塊實現(xiàn)本系統(tǒng)以校內(nèi)網(wǎng)為原型,仿照校內(nèi)網(wǎng)建立數(shù)據(jù)庫,本系統(tǒng)中的索引和搜索過程都利用到了Lucene軟件包。然后應用Struts框架技術來實現(xiàn)系統(tǒng)。5.1.1索引模塊的實現(xiàn)(1)建立索引主要代碼介紹Documentdoc=newDocument();//設置了五個Field域Fieldfield1=newField("logid",rs.getString("logid"),Field.Store.YES,Field.Index.UN_TOKENIZED);Fieldfield2=newField("userid",rs.getString("userid"),Field.Store.YES,Field.Index.UN_TOKENIZED);Fieldfield3=newField("title",rs.getString("title"),Field.Store.YES,Field.Index.TOKENIZED);Fieldfield4=newField("content",rs.getString("content"),Field.Store.NO,Field.Index.TOKENIZED);Fieldfield5=newField("time",rs.getString("time"),Field.Store.YES,Field.Index.NO); doc.add(field1);doc.add(field2);doc.add(field3);doc.add(field4);doc.add(field5);//提高關鍵字在日志標題中權重field3.setBoost(2f);writer.addDocument(doc);【寫作提示】正文中的代碼用五號字,漢字用宋體,西方用“TimesNewRoman”字體,左縮進0字符,懸掛縮進3字符。行距仍為18磅,底紋為-20%的灰度。【寫作提示】不要在正文中將代碼全部羅列出來(如果必要,全部代碼可以在附錄中列出),而是只說明關鍵的、特色的代碼。代碼在文中需要文字進行解釋,或者在代碼中給出足夠的注釋進行說明。(2)檢索中主要函數(shù)介紹//根據(jù)用戶id,得到用戶的三層好友關系,將用戶好友id放在整型數(shù)組中publicint[][]getFriend(intuserid);//定義BooleanQuery項,將用戶好友id形成一個term,之間是或關系publicBooleanQuerycreateTerms(intuserid,int[][]friendscope);//根據(jù)輸入的用戶名檢索出用戶的所有日志,同名用戶都檢索出來publicvoidsearchLog1(Stringusername)throwsSQLException;//根據(jù)用戶輸入的關鍵字和好友范圍形成的BooleanQueryterm項進行檢索,返回滿足條件的日志(注:此處是lucene自己算分的到得結果)PublicHitssearchLog2(Stringkey,BooleanQuerybquery)throwsSQLException;//對lucene檢索結果再加工,取出hits中的日志,根據(jù)日志作者所在的當前用戶好友層數(shù)乘以相應的系數(shù),得到日志的新分數(shù),按照得分排序publicDocument[]myhits(Hitshits,intfriendArray[][])throwsIOException;5.1.2數(shù)據(jù)導入導出(1)數(shù)據(jù)的導入將數(shù)據(jù)從數(shù)據(jù)庫的表導入MATLAB,有兩種方法:VQB(visualquerybuilder)和Usingfunction,前者是圖形界面,比較簡單。后者稍微復雜一點,但更靈活。我采用的是后者,因為需要在java環(huán)境中調(diào)用MATLAB中的函數(shù)。經(jīng)過矩陣運算,形成幾個純k次可達矩陣,這部分工作在服務器上提前做好,將矩陣保存在文件中,當程序運行時,直接從文件中讀取數(shù)據(jù)。%函數(shù)返回值是J,表示一個矩陣,實際是從數(shù)據(jù)庫讀出的一個向量。function[J]=dbimport();%允許登錄連接時間最長為5秒timeoutA=logintimeout(5);%指定要連接的數(shù)據(jù)庫名,連接數(shù)據(jù)庫connA=database('xiaonei','','');%測試數(shù)據(jù)庫連接狀態(tài),連接上繼續(xù)執(zhí)行,否則彈出錯誤ping(connA);%執(zhí)行該sql語句,從數(shù)據(jù)庫表中讀取一列數(shù)據(jù)cursorA=exec(connA,'selectuseridfromrelation');%獲取結果集對象cursorA=fetch(cursorA);%用J來保存數(shù)據(jù)庫讀出結果(此處J是一個向量)J=cursorA.Data;%關閉此次執(zhí)行和數(shù)據(jù)庫連接close(cursorA);close(connA);(2)數(shù)據(jù)的導出將數(shù)據(jù)從MATLAB導出的過程,實際上是從java中調(diào)用MATLAB中函數(shù)的過程,用MATLAB中類建立一個外部對象來引用,MATLAB提供了與java的接口,利用MATLABBuilderJA建立一個包,加入調(diào)用的函數(shù),連接數(shù)據(jù)庫,進行矩陣操作,將結果輸出,編譯后形成class文件,將生成的jar包導入MyEclipse,此處需要兩個jar包:javabuilder.jar(必需的)和friendbuilder.jar(自己建立的要在java中調(diào)用的包自動編譯后生成的jar),那么就可以在java中調(diào)用此函數(shù),將MATLAB中滿足條件的數(shù)據(jù)導出。以下是從java中調(diào)用MATLAB函數(shù)得到用戶的好友分層表的主要代碼。//引入MATLAB打包好的Try包中的類TryClassimportTry.TryClass;f=newTryClass();//輸入的是登錄用戶的id號,3表示輸出結果有3個,即三層好友表result=f.friendship(3,userid);inti,j,t,num[]=newint[3];//得到的一、二、三層好友個數(shù)申請數(shù)組空間for(j=0;j<3;j++){ //得到result[j](是一個一維矩陣)中非零元素個數(shù)用t存儲,即第j層好友中用戶的個數(shù) num[j]=(((MWNumericArray)result[j]).numberOfNonZeros());//為數(shù)組申請空間 friends[j]=newint[num[j]];}//將結果取出放入數(shù)組中for(i=1,j=0;j<3;j++){ while(i<=num[j]) { // 得到結果集中非零元素 t=((MWNumericArray)result[j]).getInt(i); friends[j][i-1]=t; i++; } i=1; System.out.println();}【寫作提示】寫代碼時,注意通過縮進表現(xiàn)出嵌套的層次來。

6綜合測試6.1簡單功能實現(xiàn)6.1.1登錄和注冊界面(1)登錄界面登錄時要求用戶使用郵箱登錄,因為郵箱的全稱是沒有重復的,本系統(tǒng)利用此特性,無需再進行唯一性驗證。登錄界面如圖6.1。圖6.1用戶登錄界面(2)注冊界面注冊時,電子郵箱、用戶名、密碼、學校都是必需要填寫的。當用戶少填寫其中一項,或是密碼和確認密碼不一致時,系統(tǒng)都會給以提示。用戶注冊界面如圖6.2所示。圖6.2用戶注冊界面6.1.2我的日志界面用戶進入我的日志界面用戶可以查看自己的日志,可以實現(xiàn)三個功能:發(fā)表新日志、刪除自己的日志、編輯日志。而且均實現(xiàn)了分頁功能。圖6.3我的日志界面(1)以下是用戶發(fā)表日志過程進入頁面后,首先顯示用戶已經(jīng)發(fā)表的日志。顯示用戶日志界面如圖6.3所示?!緦懽魈崾尽拷?jīng)常出現(xiàn)圖的位置不好安排的情況。由于已經(jīng)標明了圖序,圖的放置位置可以適當調(diào)整,前在前一頁或后一頁,以使每頁都被“占滿”。不過,一定要保證圖序號和標題在圖的下方。(2)用戶發(fā)表新日志,寫入標題和內(nèi)容。點擊發(fā)表后新日志可以立即顯示。用戶發(fā)表日志界面如圖6.4所示,顯示插入后顯示如圖6.5所示。圖6.4發(fā)表日志界面圖6.5顯示日志界面6.2搜索功能實現(xiàn)6.2.1檢索有關界面進行檢索時根據(jù)此登錄用戶的userid可以得到他的好友列表,此處調(diào)用MATLAB包中使用矩陣的函數(shù),生成用戶的三層好友列表如圖6.6所示。圖6.6用戶好友層次圖根據(jù)用戶的好友列表形成term檢索項,最后一行表示用戶的id號之間是或得關系,而+userid的則表示表示邏輯關系是“與”,即是且的關系,而-userid表示邏輯關系是非,即此項是排除項。用戶好友表形成的Term項如圖6.7所示。圖6.7好友表形成的term項圖(3)簡單檢索時,根據(jù)用戶輸入的檢索字符串,從用戶的三層好友所寫的日志進行檢索,結果如下:當前登錄的用戶的uid是:4第1層好友個數(shù)是:4第2層好友個數(shù)是:27第3層好友個數(shù)是:521511662367812162229313334414344505561657275919710111111211691314151718192021232627283035374045464851525354565859626467686970738084858789909293949599100102107109110113115用戶的三層好友范圍內(nèi)好友數(shù)目是:84布爾檢索串之間的關系如下:userid:4userid:1userid:5userid:11userid:66userid:2userid:3userid:6userid:7userid:8userid:12userid:16userid:22userid:29userid:31userid:33userid:34userid:41userid:43userid:44userid:50userid:55userid:61userid:65userid:72userid:75userid:91userid:97userid:101userid:111userid:112userid:116userid:9userid:13userid:14userid:15userid:17userid:18userid:19userid:20userid:21userid:23userid:26userid:27userid:28userid:30userid:35userid:37userid:40userid:45userid:46userid:48userid:51userid:52userid:53userid:54userid:56userid:58userid:59userid:62userid:64userid:67userid:68userid:69userid:70userid:73userid:80userid:84userid:85userid:87userid:89userid:90userid:92userid:93userid:94userid:95userid:99userid:100userid:102userid:107userid:109userid:110userid:113userid:115當前用戶輸入的關鍵字是:紫羅蘭注意滿足條件的日志數(shù)目是:6篇Document<stored/uncompressed,indexed<logid:105>stored/uncompressed,indexed<userid:107>stored/uncompressed,indexed,tokenized<title:貪心的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>Document<stored/uncompressed,indexed<logid:108>stored/uncompressed,indexed<userid:116>stored/uncompressed,indexed,tokenized<title:傲慢的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>Document<stored/uncompressed,indexed<logid:112>stored/uncompressed,indexed<userid:58>stored/uncompressed,indexed,tokenized<title:傲慢的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>Document<stored/uncompressed,indexed<logid:107>stored/uncompressed,indexed<userid:116>stored/uncompressed,indexed,tokenized<title:紫羅蘭的遭遇>stored/uncompressed<time:2009-05-1621:15:27.640>>Document<stored/uncompressed,indexed<logid:106>stored/uncompressed,indexed<userid:107>stored/uncompressed,indexed,tokenized<title:群花中的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>Document<stored/uncompressed,indexed<logid:111>stored/uncompressed,indexed<userid:58>stored/uncompressed,indexed,tokenized<title:不知足的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>加入用戶層次處理前此文檔的得分:0.41109389066696167107所屬層數(shù)是3Document<stored/uncompressed,indexed<logid:105>stored/uncompressed,indexed<userid:107>stored/uncompressed,indexed,tokenized<title:貪心的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>加入用戶層次處理后此文檔的得分:41.10938906669617加入用戶層次處理前此文檔的得分:0.408722847700119116所屬層數(shù)是2Document<stored/uncompressed,indexed<logid:108>stored/uncompressed,indexed<userid:116>stored/uncompressed,indexed,tokenized<title:傲慢的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>加入用戶層次處理后此文檔的得分:0.5722119867801666加入用戶層次處理前此文檔的得分:0.393408924341201858所屬層數(shù)是3Document<stored/uncompressed,indexed<logid:112>stored/uncompressed,indexed<userid:58>stored/uncompressed,indexed,tokenized<title:傲慢的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>加入用戶層次處理后此文檔的得分:39.34089243412018加入用戶層次處理前此文檔的得分:0.345240980386734116所屬層數(shù)是2Document<stored/uncompressed,indexed<logid:107>stored/uncompressed,indexed<userid:116>stored/uncompressed,indexed,tokenized<title:紫羅蘭的遭遇>stored/uncompressed<time:2009-05-1621:15:27.640>>加入用戶層次處理后此文檔的得分:0.48333737254142756加入用戶層次處理前此文檔的得分:0.3303762972354889107所屬層數(shù)是3Document<stored/uncompressed,indexed<logid:106>stored/uncompressed,indexed<userid:107>stored/uncompressed,indexed,tokenized<title:群花中的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>加入用戶層次處理后此文檔的得分:33.03762972354889加入用戶層次處理前此文檔的得分:0.1511631757020950358所屬層數(shù)是3Document<stored/uncompressed,indexed<logid:111>stored/uncompressed,indexed<userid:58>stored/uncompressed,indexed,tokenized<title:不知足的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>加入用戶層次處理后此文檔的得分:15.116317570209503Document<stored/uncompressed,indexed<logid:105>stored/uncompressed,indexed<userid:107>stored/uncompressed,indexed,tokenized<title:貪心的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>Document<stored/uncompressed,indexed<logid:111>stored/uncompressed,indexed<userid:58>stored/uncompressed,indexed,tokenized<title:不知足的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>Document<stored/uncompressed,indexed<logid:112>stored/uncompressed,indexed<userid:58>stored/uncompressed,indexed,tokenized<title:傲慢的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>Document<stored/uncompressed,indexed<logid:108>stored/uncompressed,indexed<userid:116>stored/uncompressed,indexed,tokenized<title:傲慢的紫羅蘭>stored/uncompressed<time:2009-05-1621:15:27.640>>Document<stored/uncompressed,indexed<logid:107>stored/uncompressed,indexed<userid:116>stored/uncompressed,indexed,tokenized<title:紫羅蘭的遭遇>stored/uncompressed<time:2009-05-1621:15:27.640>>stored/uncompressed,indexed<time:2009-05-3021:36:49.364>>Document<stored/uncompressed,indexed<logid:76>stored/uncompressed,indexed<userid:40>stored/uncompressed,indexed,tokenized<title:家鄉(xiāng)的端午這么過>stored/uncompressed<time:2009-05-1621:15:05.060>>

結束語經(jīng)過了近兩個月的學習和努力,我們小組三人終于完成了基于Lucene的訪問控制搜索系統(tǒng)的工作,在這個過程中我的收獲很多,需要改進和學習的地方也非常多。我從以下兩個方面對自己在此次畢業(yè)設計過程中的感想做一下總結:(一)收獲知道在做一個系統(tǒng)之前最重要的是要做好需求分析,為此,我在圖書館查看了大量的相關資料,為此次設計做了充足的準備,更進一步了解了Lucene的工作原理和訪問控制搜索系統(tǒng)要完成的各種功能。不僅如此,在這次畢業(yè)設計過程中有老師進行專門的輔導工作,老師具有豐富的理論及實踐經(jīng)驗,為我們提供了很多極其有參考價值的資料,在遇到困難時耐心的幫我們分析,為我們提供更寬廣的思考空間,從而為我們克服困難提供了極大幫助??梢愿禹樌亻_展自己的工作。其實,在做程序之前,我對Lucene基本沒有了解,我們甚至都不知道它是什么,對訪問控制的理解也僅僅局限于能不能訪問方面,通過這次設計,我深入了解了Lucene的工作原理和機制,對它的模塊功能有了更深層認識和更本質(zhì)的理解,對訪問控制的實現(xiàn)讓我更加深入認識了MATLAB這個軟件,對其中的函數(shù)能夠輕松的使用,并且熟練了對java語言的使用以及對Tomcat、MyEclipse的相關配置。在做課程設計的過程中我們遇到了很多困難,編寫代碼時總是出現(xiàn)這樣或是那樣的錯誤,而且有些功能不知道該用什么方法來實現(xiàn),經(jīng)過大家的討論和老師的指導,克服了很多。最終,我的Tomcat調(diào)用MATLAB生成的jar包中的函數(shù)仍然沒有實現(xiàn),這個問題很新,網(wǎng)上搜到的很少,也不能解決,但是java調(diào)用此jar包沒有問題,由于我的不足,使我們的程序不能很好的結合,很慚愧,在此向小組成員道歉。(二)不足之處該系統(tǒng)還存在著很大的不足,主要體現(xiàn)在以下幾個方面:首先,從數(shù)據(jù)庫表導入MATLAB過程比較簡單,但由于MATLAB的局限性,只能對doubel類型的數(shù)據(jù)進行運算,而我們的矩陣由于其特殊性,是一個0-1稀疏矩陣,無需浪費double空間來存儲,最多用integer就完全可以,有些浪費。其次,該系統(tǒng)在檢索功能設計上欠完善,未能實現(xiàn)預期的高級檢索;最后,界面設計的不太美觀,有待改進。【寫作提示】結論(或結束語)作為單獨一章排列,但標題前不加“第XXX章”字樣。結論是整個論文的總結,應以簡練的文字說明論文所做的工作,一般不超過兩頁?!緦懽魈崾尽繋讉€月的設計下來,可供總結的東西很多。寫不好總結的原因無外乎兩點:沒有認真完成畢業(yè)設計沒有可總結的,或者對論文工作不夠重視。寫出你自己的總結來,這可以吸引人眼球的一個地方。寫好總結,也是對自己幾個月工作的一個交待。

致謝光陰似箭,四年的大學生活即將過去。七月,我將告別我的大學時代,去繼續(xù)我的人生旅途。本文應該可以看作是我四年本科生活的一點總結。因此,我要真心地感謝我院所有曾經(jīng)傳授給我知識,更教給我人生哲理的的老師們,感謝所有曾幫助過我的同學們,謝謝你們讓我擁有了一段令人思考和回味的大學生活。關于這篇論文,首先我要感謝指導的畢業(yè)論文的XXX老師的熱心指導與關懷,他總是鼓勵我們,引導我們大膽的去思考去設計,總是盡其所能,最大限度的為我們提供幫助,非常感謝他的耐心指導,他知識淵博,有實力也有能力,對工作精益求精,對我們認真負責,甚至對我們的低級錯誤也從來沒有發(fā)過火,很體諒我們,他的寬容大度,他的坦誠相待,給我留下了很深的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論