




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第三章 信息檢索系統(tǒng)及其關(guān)鍵技術(shù)3.1 信息檢索系統(tǒng)簡介信息檢索系統(tǒng)是利用信息檢索技術(shù)(如全文檢索等)幫助用戶查找特定信息的一種工具。它能夠?qū)π畔⑦M(jìn)行正確的表示、存儲和組織,同時還提供對于信息的訪問方式。在這里,信息的概念很寬泛,它可以是一篇文章,一段文本,一個網(wǎng)頁,一封郵件,一張照片,甚至是一些虛擬信息的集合。3.2 信息檢索的過程檢索的整個過程包括:構(gòu)建文本庫,建立索引,進(jìn)行檢索。1. 構(gòu)建文本庫在開發(fā)檢索功能前,一個信息檢索系統(tǒng)需要做些準(zhǔn)備工作。首先,必須構(gòu)建一個文本數(shù)據(jù)庫。這個文本數(shù)據(jù)庫用來保存所有用戶可能檢索的信息。在這些信息的基礎(chǔ)上,確定檢索系統(tǒng)中的文本模型。文本模型是被系統(tǒng)所認(rèn)可
2、的一種信息格式,這種格式應(yīng)當(dāng)具有可識別、冗余度低等特點。當(dāng)然,在系統(tǒng)的運作過程中,文本數(shù)據(jù)庫的信息可能會不斷地發(fā)生變化。2. 建立索引有了文本模型后,就應(yīng)該根據(jù)數(shù)據(jù)庫內(nèi)的文本建立索引。索引可以大大提高信息檢索的速度。目前有多種索引的建立方式,采用哪種方式取決于信息檢索系統(tǒng)的規(guī)模。大型信息檢索系統(tǒng)(如百度、google這樣的搜索引擎)均采用倒排的方式來建立索引。3. 進(jìn)行搜索在為文本建立索引之后,就可以開始對其進(jìn)行搜索。通常由用戶提交一個檢索請求,該請求被分析,然后在索引中檢索并返回結(jié)果。3.3 lucenelucene是一個開源全文檢索工具包,它是apache軟件基金會jakarta項目組的一
3、個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。lucene的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。3.3.1 lucene結(jié)構(gòu)分析lucene作為一個優(yōu)秀的全文檢索引擎,其結(jié)構(gòu)具有強烈的面向?qū)ο筇卣?。首先是定義了一個與平臺無關(guān)的索引文件格式,其次通過抽象將其核心組成部分設(shè)計為抽象類,具體的平臺實現(xiàn)部分設(shè)計為抽象類的實現(xiàn),此外與具體平臺相關(guān)的部分比如文件存儲也封裝為類,經(jīng)
4、過層層的面向?qū)ο笫降奶幚?,最終達(dá)成了一個低耦合高效率,容易二次開發(fā)的檢索引擎。lucene的結(jié)構(gòu)和源碼組織結(jié)構(gòu)如圖3.1所示:圖3.1 lucene結(jié)構(gòu)和源碼組織結(jié)構(gòu)從圖中可以看出,lucene由基礎(chǔ)結(jié)構(gòu)封裝、索引核心、對外接口三大部分組成。其中直接操作索引文件的索引核心又是系統(tǒng)的重點。lucene的將所有源碼分為了7個模塊(在java語言中以包即package來表示),各個模塊所屬的部分也如圖3.1所示。3.3.2 lucene索引的建立索引是信息檢索引擎工作的第一步,只有建立了索引才能進(jìn)行信息檢索。lucene用document邏輯文件和field域來組織各種數(shù)據(jù)源。document向lu
5、cene提供原始的要索引的文本內(nèi)容,lucene從document中取出相關(guān)的數(shù)據(jù)源,并根據(jù)屬性配置進(jìn)行相應(yīng)的處理,建立索引。索引過程如下:(1) 創(chuàng)建一個indexwriter用來寫索引文件,它有幾個參數(shù),index_dir就是索引文件所存放的位置,analyzer便是用來對文檔進(jìn)行詞法分析和語言處理的。(2) 創(chuàng)建一個document代表我們要索引的文檔。(3) 將不同的field加入到文檔中。我們知道,一篇文檔有多種信息,如題目,作者,修改時間,內(nèi)容等,不同類型的信息用不同的field來表示。(4) indexwriter調(diào)用函數(shù)adddocument將索引寫到索引文件夾中。3.3.3
6、lucene的搜索lucene建立了功能強大的索引機(jī)制為搜索服務(wù),這是因為在檢索系統(tǒng)的使用中,用戶體驗最深的還是搜索部分。如果這一部分的性能無法達(dá)到用戶要求,那么軟件就沒有太大的意義。搜索過程如下:(1) indexreader將磁盤上的索引信息讀入到內(nèi)存,index_dir就是索引文件存放的位置。(2) 創(chuàng)建indexsearcher準(zhǔn)備進(jìn)行搜索。(3) 創(chuàng)建analyer用來對查詢語句進(jìn)行詞法分析和語言處理。(4) 創(chuàng)建queryparser用來對查詢語句進(jìn)行語法分析。(5) queryparser調(diào)用parser進(jìn)行語法分析,形成查詢語法樹,放到query中。(6) indexsearc
7、her調(diào)用search對查詢語法樹query進(jìn)行搜索,得到查詢結(jié)果存放在topscoredoccollector。3.3.4 中文分詞中文分詞是處理中文信息的基礎(chǔ)與關(guān)鍵。由于lucene自帶的分詞器對英文的分詞效果較好,但對中文的分詞效果并不如意。為了使檢索系統(tǒng)能更好的處理中文信息,本文采用了ikanalyzer作為分詞器。ik analyzer是一個開源的,基于java 語言開發(fā)的輕量級的中文分詞工具包。從2006年12月推出1.0 版開始, ikanalyzer已經(jīng)推出了3個大版本。最初,它是以開源項目luence 為應(yīng)用主體的,結(jié)合詞典分詞和文法分析算法的中文分詞組件。新版本的ikana
8、lyzer 3.x 則發(fā)展為面向java 的公用分詞組件,獨立于lucene 項目,同時提供了對lucene 的默認(rèn)優(yōu)化實現(xiàn)。ikanalyzer的特性:l 采用了特有的“正向迭代最細(xì)粒度切分算法“,具有60 萬字/秒的高速處理能力。l 采用了多子處理器分析模式,支持:英文字母(ip 地址、email、url)、數(shù)字(日期,常用中文數(shù)量詞,羅馬數(shù)字,科學(xué)計數(shù)法),中文詞匯(姓名、地名處理)等分詞處理。l 優(yōu)化的詞典存儲,更小的內(nèi)存占用。支持用戶詞典擴(kuò)展定義l 針對lucene 全文檢索優(yōu)化的查詢分析器ikqueryparser;采用歧義分析算法優(yōu)化查詢關(guān)鍵字的搜索排列組合,能極大的提高luce
9、ne 檢索的命中率。第四章 信息檢索系統(tǒng)的分析與設(shè)計4.1 系統(tǒng)功能需求隨著科技的發(fā)展,電腦的應(yīng)用越來越普遍,人們的學(xué)習(xí)工作幾乎都不能離開電腦。而筆記本電腦由于其輕便和時尚性,受到人們普遍的喜愛。但是,在購買筆記本時,我們需要詳細(xì)地了解所買型號筆記本的外表及各種功能,為此我們往往要去各個商家挑選。為了方便,需要提供一個專門的筆記本電腦信息查詢系統(tǒng),能讓用戶輕松的獲取各種型號筆記本的詳細(xì)參數(shù)與外觀。該系統(tǒng)提供一個良好的用戶界面,用戶查詢時,系統(tǒng)能根據(jù)用戶查詢語句精確地給出查詢信息,能夠較好地理解用戶的查詢語句。4.2 系統(tǒng)開發(fā)平臺設(shè)計本系統(tǒng)采用的是eclipse6.5+mysql5.1+tomc
10、at5.5的開發(fā)環(huán)境。l eclipse是一個開放源代碼的、基于java的可擴(kuò)展開發(fā)平臺。在開發(fā)時搭配使用myeclipse進(jìn)行開發(fā)。myeclipse企業(yè)級工作平臺是對eclipse ide的擴(kuò)展,利用它可以在數(shù)據(jù)庫和j2ee的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大地提高工作效率。它是功能豐富的j2ee集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持html css、javascript、struts、spring、sql、hibernate和jsf。l mysql是最受歡迎的開源sql數(shù)據(jù)庫管理系統(tǒng),它由mysql ab開發(fā)、發(fā)布和支持。mysql服務(wù)器支持關(guān)鍵任務(wù)、重
11、負(fù)載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個大配置的軟件中。本文采用的是當(dāng)前的穩(wěn)定版本5.1。l tomcat是一個免費的、開放源碼的、支持jsp和servlet的web服務(wù)器。tomcat是一個小型的輕量級應(yīng)用服務(wù)器,在中、小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試jsp程序的首選。它運行時占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能。目前tomcat5.5是較穩(wěn)定的版本,而且eclipse也很好的支持該版本的集成,所以本文采用tomcat5.5進(jìn)行開發(fā)。此外,本系統(tǒng)所應(yīng)用到的其它開源工具為:struts1.2、spring2.5、hiberna
12、te3.1,網(wǎng)絡(luò)爬蟲heritrix1.14.3,網(wǎng)頁解析工具h(yuǎn)tmlparser2.0,全文檢索工具包lucene3.0,中文分詞軟件ikanalyzer3.0。4.3 系統(tǒng)的組成結(jié)構(gòu)整個系統(tǒng)由三個部分組成:網(wǎng)頁采集分析模塊、索引與數(shù)據(jù)庫模塊、web搜索界面模塊。其中網(wǎng)頁采集與分析分別由開源工具網(wǎng)絡(luò)爬蟲heritrix和網(wǎng)頁解析器htmlparser完成;由lucene完成索引系統(tǒng),并將索引與數(shù)據(jù)庫關(guān)聯(lián);web查詢界面基于ssh框架設(shè)計完成。模塊組成結(jié)構(gòu)如圖4.1所示。圖4.1 系統(tǒng)模塊結(jié)構(gòu)圖4.4 網(wǎng)頁抓取分析模塊設(shè)計4.4.1 站點選擇從技術(shù)角度看,選擇網(wǎng)站的主要依據(jù)有:(1) 網(wǎng)站能夠
13、被heritrix爬蟲抓取。因為有的網(wǎng)站使用了反爬蟲技術(shù),防止未經(jīng)授權(quán)的爬蟲對面頁進(jìn)行抓取。(2) 網(wǎng)站的信息不是用javascript動態(tài)生成的。這種動態(tài)生成的內(nèi)容需要在瀏覽器中運行生成,是爬蟲無法獲取到的。(3) 網(wǎng)站的面頁結(jié)構(gòu)不應(yīng)該經(jīng)常變化,最好是使用一種模版動態(tài)生成的。這樣有利于在分析面頁時,使用較為簡單的方式從網(wǎng)頁中解析數(shù)據(jù)。除了上述3點技術(shù)方面的因素,在選擇網(wǎng)站時,也應(yīng)當(dāng)盡量選擇那些訪問量較大、產(chǎn)品信息比較齊全的網(wǎng)站。這樣,有利于數(shù)據(jù)完整性?;谏鲜龈饕蛩氐目紤],本文選擇太平洋電腦網(wǎng)()作為主要抓取目標(biāo)。系統(tǒng)將通過人工分析和爬蟲軟件抓取太平洋網(wǎng)站的所有筆記本的頁面信息和圖片,對抓取
14、的網(wǎng)頁和圖片經(jīng)過處理后,供建立搜索索引使用。4.4.2 擴(kuò)展和定制heritrix分析太平洋網(wǎng)站筆記本網(wǎng)頁url特點可知:筆記本面頁url已筆記本品牌面頁url的正則表達(dá)式為: $例如蘋果為:具體某型號產(chǎn)品面頁url的正則表達(dá)式為:例如蘋果macbook pro 15(mc373ch/a):產(chǎn)品詳細(xì)參數(shù)面頁url的正則表達(dá)式為:例如蘋果macbook pro 15(mc373ch/a)詳細(xì)參數(shù):產(chǎn)品頁的產(chǎn)品圖片url都是以.jpg結(jié)尾。通過對網(wǎng)站url分析,可以總結(jié)出我們要抓取的面頁url的規(guī)律,只要抓取產(chǎn)品面頁和產(chǎn)品詳細(xì)信息面頁及產(chǎn)品圖片即可。因此,要擴(kuò)展heritrix來實現(xiàn)上述抓取策略。
15、heritrix有多個擴(kuò)展點,本文選擇擴(kuò)展frontierscheduler來抓取特定的內(nèi)容。frontierscheduler是heritrix的一個postprocessor,它的作用是將extractor中分析得出的鏈接加入到frontier中,以待繼續(xù)處理。擴(kuò)展代碼如下:protected void schedule(candidateuri cauri)/取得uri字符串string url = cauri.tostring();try/uri選擇策略/匹配 具體型號urlpattern pattern_model = ppile(model_url);matcher matcher
16、_model = pattern_model.matcher(url);/匹配 型號詳細(xì)參數(shù)urlpattern pattern_detail = ppile(detail_url);matcher matcher_detail = pattern_detail.matcher(url);/url是產(chǎn)品面頁/詳細(xì)參數(shù)面頁/jpg圖片/dnsif(/matcher_detail.find()|matcher_model.find()|url.endswith(.jpg)|url.indexof(dns:)!=-1)getcontroller().getfrontier().schedule(ca
17、uri);elsereturn;catch(exception e)e.printstacktrace();finally4.4.3 網(wǎng)頁解析工具h(yuǎn)tmlparser對于抓取到的網(wǎng)頁,需要經(jīng)過解析,提取出需要的信息以便更好的建立索引和創(chuàng)建數(shù)據(jù)庫。本文html解析器是htmlparser,htmlparser是一個開源的java庫,它提供接口,支持線程和嵌套的解析html文本。htmlparser提供了兩種訪問html結(jié)點的方法:visitor模式和filter模式,本文采用了filter模式。filter模式通過設(shè)置一定的過濾條件,對每個結(jié)點進(jìn)行過濾,返回一個符合規(guī)則的節(jié)點列表。org.htm
18、lparser.filters包含所有已經(jīng)實現(xiàn)的filter類型,定義了16種filter。例如要解析一個網(wǎng)頁中所有包含圖片的鏈接,分析可得該節(jié)點中具有鏈接標(biāo)簽名”a”,并且它的字節(jié)點中還必須包含圖片標(biāo)簽名”img”,則過濾器的定義為:nodefilter filter = new andfilter(new tagnamefilter(a),new haschildfilter(new tagnamefilter(img)4.4.4 網(wǎng)頁信息結(jié)構(gòu)化在抓取到筆記本產(chǎn)品各種信息的html文本后,需要用htmlparser對html文本解析,得到建立索引所需的各種信息。處理后的的文件如圖4.2所示
19、。圖4.2 處理后產(chǎn)品的信息格式從圖中可以看出文件的格式如下:第一行是筆記本品牌(包括中文和英文名稱);第二行是筆記本具體型號;最后一行則是該筆記本的對應(yīng)圖片文件名,圖片名是經(jīng)過hash后的字符串;其余部分則是該筆記本的詳細(xì)參數(shù)。將所有筆記本產(chǎn)品的信息按上述格式存儲,以便建立索引。4.5 數(shù)據(jù)庫與索引設(shè)計4.5.1 數(shù)據(jù)庫設(shè)計本文數(shù)據(jù)庫結(jié)構(gòu)簡單,只有一個數(shù)據(jù)表來存儲筆記本產(chǎn)品的各種信息,數(shù)據(jù)庫各字段含義如表4.1所示。表4.1 數(shù)據(jù)庫字段含義字段名字段含義id主鍵name品牌名稱,如”蘋果”type型號,如” ibook g4 m9627ch/a”content筆記本產(chǎn)品的詳細(xì)信息abstra
20、ctcontent詳細(xì)參數(shù)的摘要,供建立索引時使用創(chuàng)建數(shù)據(jù)庫的sql語句如下:create database searchdb;use searchdb;create table product ( id int auto_increment, name varchar(128), type varchar(128), content varchar(20000), abstractcontent varchar(512),);4.5.2 索引設(shè)計在使用lucene建立索引時,需要定義lucene的document格式。索引中的信息應(yīng)當(dāng)盡量少,只要能夠滿足用戶檢索要求就可以了。本文中,為doc
21、ument構(gòu)建了4個field:/當(dāng)前產(chǎn)品在數(shù)據(jù)庫中的idfield indentifier = new field(id,id + ,field.store.yes,field.index.not_analyzed);/產(chǎn)品的品牌field name = new field(name,product.getname(),field.store.yes,field.index.analyzed);/產(chǎn)品型號field type = new field(type,product.gettype(),field.store.yes,field.index.analyzed);/將筆記本產(chǎn)品的nam
22、e、type、abstractcontent信息綜合起來,默認(rèn)的檢索域field all = new field(all,text,field.store.yes,field.index.analyzed);上述4中filed中,前3個與數(shù)據(jù)庫的內(nèi)容有直接的對應(yīng)關(guān)系,而最后一個filed則是將name、type這兩個filed拼接起來并添加了abstractcontent來進(jìn)行保存,為用戶提供一個檢索時的默認(rèn)filed。這種方式占用了索引空間,但卻避免了使用多域搜索帶來的性能損失,還可提高檢索的全面性。4.6 web檢索模塊設(shè)計web檢索模塊基于ssh設(shè)計實現(xiàn),由struts作為控制器,spr
23、ing作為業(yè)務(wù)層,hibernate作為數(shù)據(jù)持久層,結(jié)構(gòu)如圖4.3所示。圖4.3 基于ssh的web檢索模塊結(jié)構(gòu)圖從圖中可以看出,用戶的請求會發(fā)送給actionservlet,用戶數(shù)據(jù)通過actionform bean傳遞給action,由action類來通過spring的ioc容器訪問hibernate的dao,dao負(fù)責(zé)數(shù)據(jù)庫的交互,然后再返回jsp面頁將查詢結(jié)果進(jìn)行顯示。 第五章 信息檢索系統(tǒng)的實現(xiàn)5.1 網(wǎng)頁抓取的實現(xiàn)在抓取任務(wù)開始前,需要對抓取的內(nèi)容進(jìn)行詳細(xì)地分析,確定種子,即開始抓取的網(wǎng)頁。本文中為了能盡量獲取全部的產(chǎn)品信息,直接將需要抓取的面頁(包括產(chǎn)品面頁、詳細(xì)參數(shù)面頁、圖片)
24、的url作為抓取的種子,這就需要找出所有產(chǎn)品的具體url。在太平洋電腦網(wǎng)上提供了站內(nèi)搜索功能,當(dāng)輸入查詢某品牌的筆記本就能得到站內(nèi)所有該品牌標(biāo)記本的信息的面頁,當(dāng)然面頁中也包含這些筆記本的產(chǎn)品面頁的url,這就提供了抓取的種子。依次查詢各個品牌的筆記本,將查詢結(jié)果面頁保存到本地,然后用htmlparser解析得到其中產(chǎn)品面頁的url,寫入種子文件。圖5.1 查詢結(jié)果面頁源代碼從網(wǎng)頁源代碼中可以發(fā)現(xiàn)解析網(wǎng)頁時可以得到該品牌所有筆記本產(chǎn)品的產(chǎn)品面頁和詳細(xì)參數(shù)面頁的url。其中產(chǎn)品詳細(xì)參數(shù)面頁url的節(jié)點形如:全部參數(shù)在解析時的過濾器為:nodefilter filter = new andfilt
25、er(new tagnamefilter(a),new andfilter(new hasattributefilter(target,_blank),new hasparentfilter(new andfilter(new tagnamefilter(div),new hasattributefilter(class,line2);在用htmlparser解析得到過濾的節(jié)點后,只需得到該linktag的href屬性值即為某一型號筆記本的詳細(xì)參數(shù)面頁url,而由于產(chǎn)品面頁與詳細(xì)參數(shù)面頁的url只相差”_detail”,所以只需將詳細(xì)參數(shù)的url去掉_detail就可得到產(chǎn)品面頁的url。這樣
26、就可得到該品牌所有筆記本信息面頁的url,也即得到了該品牌的抓取url種子。按照上述方法獲取所有品牌的抓取種子。在獲取抓取種子后,就可以創(chuàng)建heritrix抓取任務(wù)。以webui方式啟動heritrix任務(wù)時的主要配置如下。extractor,它主要用是于解析當(dāng)前獲取到的服務(wù)器返回內(nèi)容,這些內(nèi)容通常是以字符串形式緩存的。在這個隊列中,包括了一系列的工具,如解析html、css等。在解析完畢,取出頁面中的url后,將它們放入隊列中,等待下次繼續(xù)抓取。在本文中,使用兩種extractor,即extractorhttp和extractorhtml。如圖所示。圖5.2 extractor配置write
27、r,主要是用于將所抓取到的信息寫入磁盤。通常寫入磁盤時有兩種形式,一種是采用壓縮的方式寫入,在這里被稱為arc方式,另一種則采用鏡象方式寫入。當(dāng)然處理起來,鏡象方式要更為容易一些,因此,在本文中用鏡象mirror方式。如圖所示。圖5.3 writer配置postprocessor,在整個抓取解析過程結(jié)束后,進(jìn)行一些掃尾的工作,比如將前面extractor解析出來的url有條件的加入到待處理隊列中去。如圖所示。圖5.4 postprocessor配置5.2 建立lucene索引和數(shù)據(jù)庫在抓取網(wǎng)頁后,就可以用解析得到的筆記本產(chǎn)品信息文件目錄中的文件來填充數(shù)據(jù)庫和建立索引。為了提高性能和簡化數(shù)據(jù)庫操
28、作,本文使用了hibernate來進(jìn)行數(shù)據(jù)庫處理。hibernate對應(yīng)數(shù)據(jù)庫的pojo類為product類。向數(shù)據(jù)庫中插入記錄的代碼如下:public int addproduct(product product) throws hibernateexceptionsession session = null;transaction tx = null;trysession = hibernatesessionfactory.getsession();tx = session.begintransaction();session.save(product);mit();catch(hiber
29、nateexception e)if(tx != null)tx.rollback();throw e;finallyhibernatesessionfactory.closesession();return(product.getid();建立索引時,遍歷產(chǎn)品信息文件目錄中的每個文件,通過文件內(nèi)容建立一個product類,用hibernate將product對象插入數(shù)據(jù)庫。再使用該product 創(chuàng)建定制好的lucene的document,然后調(diào)用lucene的indexwriter的adddocument方法,把生成的產(chǎn)品document加入到索引中去。演示代碼如下:bufferedrea
30、der reader = new bufferedreader(new filereader(productfile);string url = reader.readline();string name = reader.readline(); /獲取品牌名string type = reader.readline().replaceall(-, );type = type.replaceall(_, ); /獲取型號string imageuri = ;string updatedtime = fname.substring(fname.lastindexof(-)+1, fname.la
31、stindexof(.);stringbuffer content = new stringbuffer();string line = reader.readline();while(line != null & !line.equals(extractor.separator)content.append(line).append(rn);line = reader.readline();imageuri = propertyconfiguration.getproductimagedir() + reader.readline();/生成一個product對象product p = ne
32、w product(); p.setname(name.trim(); p.settype(type);p.setimageurl(imageuri);p.seturl(url);p.setupdatedtime(updatedtime);string content_str = content.tostring(); /制作產(chǎn)品的信息摘要 p.setcontent(content_str);if(content_str.length() summary_length)p.setabstractcontent(content_str.substring(0, summary_length-1)
33、;elsep.setabstractcontent(content_str);/存入數(shù)據(jù)庫,并返回idint id = insertdb(p);/向索引中加入product對象buildindex(p,id);5.3 web查詢功能的實現(xiàn)在建立索引和完善數(shù)據(jù)庫后,還不能直接給用戶使用,一個真正的信息檢索系統(tǒng)還需要一個良好用戶界面。所以,還要在數(shù)據(jù)庫和lucene索引的基礎(chǔ)上搭建一個合理的web平臺,構(gòu)建一個真正的web信息檢索系統(tǒng)。5.3.1 數(shù)據(jù)持久層的實現(xiàn)數(shù)據(jù)持久層的開發(fā)中,要創(chuàng)建hibernate的持久化類和映射文件,并在spring的applicationcontent.xml中進(jìn)行配
34、置,然后開發(fā)配置hibernate dao層productdao.java。典型代碼如下:public class productdao extends hibernatedaosupport implements iproductdao /向數(shù)據(jù)庫中加入對象public int addproduct(product product) throws hibernateexceptionsession session = null;transaction tx = null;trysession = hibernatesessionfactory.getsession();tx = session.begintransaction();session.save(product);mit();catch(hibernateexception e)if(tx != null)tx.rollback();throw e;finallyhibernatesessionfactory.closesession();return(product.getid();/從數(shù)據(jù)庫中取出數(shù)據(jù) public product findbyid(string id) re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)碼沖印服務(wù)合同范本
- 各類傳感器采購合同
- 按月支付合同范本
- 植被種植合同范本
- 會員分銷合同范本
- 勞動合同解除復(fù)核協(xié)議
- 征地補償合同范本
- 第4章 基因的表達(dá)說課教學(xué)設(shè)計-2024-2025學(xué)年高一下學(xué)期生物人教版必修二
- 自行車修理工具銷售合同
- 企業(yè)勞動合同范本簡易版2
- 2023年涼山州西昌市人民醫(yī)院招聘衛(wèi)生專業(yè)技術(shù)人員考試真題
- (2024)湖南省公務(wù)員考試《行測》真題卷及答案解析
- 2025年部編教材的網(wǎng)絡(luò)培訓(xùn)心得體會
- 《籃球規(guī)則》課件
- 中醫(yī)24節(jié)氣課件
- 《化工安全技術(shù)》教學(xué)設(shè)計(教學(xué)教案)
- 環(huán)衛(wèi)應(yīng)急預(yù)案8篇
- 《與顧客溝通的技巧》課件
- 2024年大學(xué)生創(chuàng)業(yè)投資意向書
- DB14-T2980-2024低品位鋁土礦資源綜合利用技術(shù)規(guī)范
- 2024小學(xué)語文新教材培訓(xùn):一年級語文教材的修訂思路和主要變化
評論
0/150
提交評論