岳紹敏,李萬(wàn)龍,王 璐,光順利
(長(zhǎng)春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,長(zhǎng)春 130012)
基于Lucene索引的數(shù)據(jù)庫(kù)全文檢索
岳紹敏,李萬(wàn)龍,王 璐,光順利
(長(zhǎng)春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,長(zhǎng)春 130012)
針對(duì)傳統(tǒng)數(shù)據(jù)庫(kù)檢索中檢索速度較慢、 檢索結(jié)果不完整、 檢索結(jié)果排列無(wú)序等問(wèn)題,基于全文檢索工具Lucene索引的結(jié)構(gòu),設(shè)計(jì)一種基于Lucene的數(shù)據(jù)庫(kù)索引結(jié)構(gòu),并提出記錄倒排索引鏈表的概念,使網(wǎng)站不用再按照傳統(tǒng)順序查找方式進(jìn)行檢索,而是以索引庫(kù)中的關(guān)鍵詞進(jìn)行檢索,提高了檢索效率. 實(shí)驗(yàn)結(jié)果表明,基于Lucene的數(shù)據(jù)庫(kù)全文檢索具有查全率高、 檢索結(jié)果排列有序等優(yōu)點(diǎn).
倒排索引; Lucene索引; 全文檢索; 索引結(jié)構(gòu)
隨著信息化水平的不斷提高及Internet的迅速發(fā)展,需要存儲(chǔ)的數(shù)據(jù)越來(lái)越多,各大網(wǎng)站的信息量不斷增長(zhǎng)[1],如具有海量數(shù)據(jù)的電子商務(wù)類(lèi)網(wǎng)站. 目前針對(duì)網(wǎng)站的傳統(tǒng)數(shù)據(jù)庫(kù)檢索技術(shù)遇到了諸多問(wèn)題[2],如檢索效率較低、 響應(yīng)時(shí)間過(guò)長(zhǎng)、 檢索結(jié)果與用戶的查詢(xún)意圖符合度低、 檢索結(jié)果的信息不完整、 檢索結(jié)果不能按照用戶的查詢(xún)意圖進(jìn)行排序和無(wú)法提高用戶搜索體驗(yàn)等.
信息檢索指在信息集合中進(jìn)行查詢(xún),找出符合用戶需求的信息. 在信息檢索技術(shù)中,全文檢索具有通用性,且最具實(shí)用性[3]. 全文檢索將用戶的查詢(xún)請(qǐng)求與文本中的每個(gè)詞進(jìn)行比較,與數(shù)據(jù)庫(kù)檢索的字段匹配相比,全文搜索引擎的優(yōu)點(diǎn)是查詢(xún)?nèi)娑浞?可以給用戶最全面、 最廣泛的搜索結(jié)果[4]; 且全文檢索是將用戶輸入的關(guān)鍵詞與索引庫(kù)內(nèi)相關(guān)信息的索引詞進(jìn)行匹配,與數(shù)據(jù)庫(kù)檢索的順序搜索相比,提高了檢索效率.
本文借鑒全文搜索工具Lucene的索引結(jié)構(gòu),設(shè)計(jì)一種針對(duì)數(shù)據(jù)庫(kù)信息的倒排索引結(jié)構(gòu),構(gòu)建了基于Lucene的數(shù)據(jù)庫(kù)全文檢索系統(tǒng)(database full-text retrieval system based-Lucene,DFRS). 實(shí)驗(yàn)結(jié)果表明,DFRS系統(tǒng)顯著提高了數(shù)據(jù)庫(kù)檢索的效率和查全率,可使用戶獲得更好的搜索體驗(yàn).
Lucene是一個(gè)全文檢索引擎工具包,具有開(kāi)放的源代碼,并提供了完整的索引引擎和查詢(xún)引擎及部分文本分析引擎[5](主要針對(duì)英文與德文). Lucene從總體上分為索引功能和檢索功能兩部分[6]. Lucene的索引引擎可將文本內(nèi)容切詞,并對(duì)其建立索引,然后加入索引庫(kù). Lucene的查詢(xún)引擎會(huì)按照用戶的查詢(xún)條件進(jìn)行搜索,并給用戶返回相關(guān)結(jié)果[7]. 與傳統(tǒng)全文檢索引擎相比,Lucene具有如下特點(diǎn):
1) Lucene的索引文件格式是自定義的,與應(yīng)用平臺(tái)無(wú)關(guān),它以8位字節(jié)為基礎(chǔ),兼容系統(tǒng)或不同平臺(tái)的應(yīng)用可以使用同一索引文件;
2) 基于傳統(tǒng)檢索引擎的倒排索引,Lucene增加了分塊索引功能,可對(duì)新的待索引文件建立小索引[8],并通過(guò)與已有的索引合并,可對(duì)索引文件進(jìn)行優(yōu)化,提升檢索效率;
3) Lucene具有與語(yǔ)言和文件格式無(wú)關(guān)的文本分析接口,當(dāng)創(chuàng)建索引文件時(shí),只要用索引器接收Token流即可完成操作;
4) Lucene擁有已經(jīng)實(shí)現(xiàn)了的查詢(xún)引擎,用戶可直接利用該引擎實(shí)現(xiàn)自己的查詢(xún)功能,并可自己定制查詢(xún)語(yǔ)法規(guī)則,如布爾查詢(xún)和分組查詢(xún)等[9].
Lucene索引的結(jié)構(gòu)分為4層,分別為Index層、 Segment層、 Document層和Field層[10]. Lucene索引Index由若干段(Segment)組成,每段由若干文檔(Document)組成,每個(gè)文檔由若干字段(Field)組成,每個(gè)字段由若干詞元(Term)組成.
由于Lucene索引是按照一定結(jié)構(gòu)組織的,所以查詢(xún)時(shí)不用在原數(shù)據(jù)源內(nèi)進(jìn)行順序搜索,可直接從索引文件中查找[11],搜索的范圍得以降低,因此查詢(xún)的速度和效率較快.
Lucene的數(shù)據(jù)源不是某個(gè)具體形式,而是一個(gè)文檔的結(jié)構(gòu),用戶進(jìn)行索引的源可以有多種形式[12],如html文件、 pdf文件、 字符串或數(shù)據(jù)庫(kù)表中的記錄等.
2.1DFRS的結(jié)構(gòu)
圖1 基于Lucene的數(shù)據(jù)庫(kù)全文檢索系統(tǒng)結(jié)構(gòu)Fig.1 Structure of database full-text retrievalsystem based-Lucene
基于Lucene的數(shù)據(jù)庫(kù)全文檢索系統(tǒng)(DFRS)分為建立索引和查詢(xún)索引兩部分. 建立索引模塊周期性地從數(shù)據(jù)庫(kù)收集信息,對(duì)采集到的信息進(jìn)行相應(yīng)的詞法、 語(yǔ)法分析,對(duì)其建立索引,然后把索引添加到索引庫(kù). DFRS可根據(jù)用戶輸入的信息,獲取用戶的查詢(xún)條件,并對(duì)查詢(xún)條件進(jìn)行分析,然后從索引庫(kù)中進(jìn)行搜索,最后把相關(guān)的查詢(xún)結(jié)果呈現(xiàn)給用戶. 基于Lucene的數(shù)據(jù)庫(kù)全文檢索系統(tǒng)結(jié)構(gòu)如圖1所示.
2.2數(shù)據(jù)庫(kù)索引的結(jié)構(gòu)
數(shù)據(jù)庫(kù)索引結(jié)構(gòu)與Lucene索引結(jié)構(gòu)類(lèi)似,也分為4層,分別為Index層、 Segment層、 Record層、 Field層. 與其不同的是,數(shù)據(jù)庫(kù)索引結(jié)構(gòu)第2層存儲(chǔ)的不是文檔(Document),而是數(shù)據(jù)庫(kù)的記錄(Record)信息. Index由若干段(Segment)組成,每段由若干記錄(Record)組成,每條記錄由若干字段(Field)組成,每個(gè)字段由若干詞元(Term)組成,詞元是最小的索引概念單位.
建立索引時(shí),并不是每個(gè)Record都馬上添加到同一個(gè)索引文件,它們首先被寫(xiě)入到不同的小文件,再合并成一個(gè)大索引文件,每個(gè)小文件都是一個(gè)Segment. 用戶提供的源是數(shù)據(jù)庫(kù)表中的一條記錄,一條記錄經(jīng)過(guò)索引后,以一個(gè)Record的形式存儲(chǔ)在索引文件中. 一個(gè)Record可包含多個(gè)字段信息,如表中一條記錄可包含“姓名”、 “性別”、 “身高”、 “個(gè)人簡(jiǎn)介”等字段,這些字段信息以Field的形式保存在Record中. Term是搜索的最小單位,表示字段內(nèi)容經(jīng)過(guò)分解后得到的一個(gè)詞,如字段內(nèi)容是“張明喜歡唱歌,同時(shí)也喜歡跳舞”,分詞后得到的Term有“張明”、 “喜歡”、 “唱歌”、 “跳舞”等.
創(chuàng)建數(shù)據(jù)庫(kù)索引的步驟:
1) 獲取信息源. 按一定周期讀取數(shù)據(jù)庫(kù)表中的記錄,作為創(chuàng)建數(shù)據(jù)索引的信息源;
2) 信息篩選. 在一條記錄中,要存放哪些字段才能達(dá)到信息完整且避免垃圾信息,如學(xué)生信息,要存儲(chǔ)的是學(xué)生的“姓名”、 “籍貫”、 “個(gè)人簡(jiǎn)介”等,而“視力”、 “肺活量”等其他信息一般不用存儲(chǔ);
3) 信息分析. 將篩選好的信息進(jìn)行分詞,對(duì)中文和英文使用的分詞器,一般用標(biāo)準(zhǔn)分詞器(StandardAnalyzer)[13];
4) 建立索引庫(kù). 把記錄寫(xiě)入到索引庫(kù),并根據(jù)分詞器進(jìn)行分詞、 建立索引,索引庫(kù)可建立到硬盤(pán)內(nèi),也可建立在內(nèi)存中;
5) 把記錄添加到索引庫(kù).
2.3倒排索引
圖2 倒排索引結(jié)構(gòu)Fig.2 Structure of inverted index
倒排索引是一種索引方法,被用于存儲(chǔ)在全文搜索下某個(gè)關(guān)鍵詞在一條記錄或一組記錄中存儲(chǔ)位置的映射[14]. 這種索引表中的每項(xiàng)都包含一個(gè)屬性值和具有該屬性值的各記錄地址. 由于不是由記錄確定屬性值,而是由屬性值確定記錄的位置,因而稱(chēng)為倒排索引. 由于倒排索引通過(guò)屬性值確定記錄的位置,所以檢索速度比普通的順序查詢(xún)快很多. 此外,不同類(lèi)型的信息都可存儲(chǔ)在倒排鏈表中,使倒排索引具有較大的靈活性. 倒排索引結(jié)構(gòu)如圖2所示. 由圖2可見(jiàn),記錄頻次(Record Frequency,RF)表示共有多少記錄包含此詞(Term); 詞頻率(Frequency)表示該記錄中包含了幾個(gè)該詞(Term). 當(dāng)進(jìn)行檢索時(shí)可參考該參數(shù),將更符合用戶意圖的搜索結(jié)果排在前列,可減輕用戶的檢索負(fù)擔(dān),并增加用戶的搜索體驗(yàn).
數(shù)據(jù)庫(kù)索引以倒排索引的形式存在. 基于Lucene的數(shù)據(jù)庫(kù)全文檢索系統(tǒng)的索引中,每條記錄由若干字段(Field)組成,每個(gè)字段由若干詞元(Term)組成. 在倒排索引中,不同的Term組成一個(gè)詞典文件,記錄頻次(RF)是每個(gè)Term在所有記錄中出現(xiàn)的次數(shù),指針指向每個(gè)Term所對(duì)應(yīng)的位置文件和頻率文件. 通過(guò)指針,可找到關(guān)鍵詞Term在數(shù)據(jù)庫(kù)記錄中的位置信息和頻率信息.
下面用兩條數(shù)據(jù)庫(kù)記錄為例給出創(chuàng)建記錄倒排鏈表的過(guò)程:
1) 學(xué)生被準(zhǔn)許和他們的朋友走出學(xué)校玩耍(Record ID: A0001);
2) 我的朋友去學(xué)??赐膶W(xué)生(Record ID: A0002).
將原始記錄進(jìn)行分詞處理,可得到詞元(Term): “學(xué)生”、 “準(zhǔn)許”、 “他們”、 “朋友”、 “走出”、 “學(xué)?!?、 “玩?!?、 “朋友”、 “學(xué)?!?、 “學(xué)生”、 “看望”. 利用所得到的Term創(chuàng)建一個(gè)字典,對(duì)字典按照英文字母排序,合并相同詞Term成為記錄倒排鏈表,如圖3所示.
圖3 記錄倒排鏈表示意圖Fig.3 Sketch map of record inverted list
例如,對(duì)于詞(Term)“學(xué)校”,共有兩條記錄包含該詞(Term),從而詞(Term)后面的記錄鏈表共有兩項(xiàng),第一項(xiàng)表示包含“學(xué)?!钡牡谝粭l記錄,即1號(hào)記錄,該記錄中“學(xué)?!背霈F(xiàn)了1次; 第二項(xiàng)表示包含“學(xué)?!钡牡诙l記錄,即2號(hào)記錄,此記錄中“學(xué)校”出現(xiàn)了1次.
2.4基于索引的查詢(xún)過(guò)程
首先獲取用戶的查詢(xún)語(yǔ)句,然后對(duì)查詢(xún)語(yǔ)句進(jìn)行詞法分析,提取出單詞和關(guān)鍵字,再根據(jù)語(yǔ)法規(guī)則形成語(yǔ)法樹(shù),最后利用搜索索引得到符合語(yǔ)法樹(shù)的記錄.
以語(yǔ)法樹(shù)“word1 AND word2 NOT word3”為例,搜索索引分為以下幾步:
1) 在反向索引表中,分別找出包含word1,word2,word3的記錄鏈表;
2) 對(duì)包含word1,word2的鏈表進(jìn)行合并操作,得到既包含word1又包含word2的記錄鏈表;
3) 將該鏈表與word3的記錄鏈表進(jìn)行差操作,去除包含word3的記錄,從而得到既包含word1又包含word2且不包含word3的記錄鏈表,該記錄鏈表就是符合檢索條件的記錄.
2.5DFRS檢索和數(shù)據(jù)庫(kù)檢索的比較
DFRS將數(shù)據(jù)庫(kù)表中的記錄通過(guò)全文索引建立反向索引(倒排索引); 對(duì)于LIKE查詢(xún),傳統(tǒng)的數(shù)據(jù)庫(kù)索引無(wú)法使用,需要對(duì)數(shù)據(jù)庫(kù)的記錄逐個(gè)遍歷,進(jìn)行GREP式的模糊匹配. 有索引的DFRS檢索和數(shù)據(jù)庫(kù)檢索相比,搜索速度明顯提高.
2.5.1 匹配效果 DFRS通過(guò)詞元(Term)進(jìn)行匹配,可匹配詞序顛倒的記錄; 數(shù)據(jù)庫(kù)對(duì)多個(gè)關(guān)鍵詞的模糊匹配,可以使用諸如“l(fā)ike %吉林%航空%”的查詢(xún)語(yǔ)句,但不能匹配詞序顛倒的記錄,如“xxx航空xxx吉林”.
2.5.2 匹配度 DFRS在對(duì)檢索結(jié)果排序時(shí),參考了關(guān)鍵詞的詞頻率,能將匹配度(相似度)較高的結(jié)果排在前面,從而減輕用戶的檢索負(fù)擔(dān),并提高用戶的搜索體驗(yàn); 數(shù)據(jù)庫(kù)沒(méi)有匹配度的控制,如分別有記錄中“喜歡”這個(gè)詞出現(xiàn)6次和出現(xiàn)1次的,但是檢索結(jié)果相同.
2.5.3 結(jié)果顯示 DFRS通過(guò)特別的算法,將顯示匹配度最高的前100條結(jié)果,檢索結(jié)果有序排列,且結(jié)果集是緩沖式小批量讀取的; 數(shù)據(jù)庫(kù)的檢索結(jié)果沒(méi)有順序,且會(huì)返回所有的結(jié)果集,在匹配條目非常多時(shí)(如上萬(wàn)條)需要大量的內(nèi)存存放這些臨時(shí)結(jié)果集.
因此,通過(guò)全文索引對(duì)數(shù)據(jù)庫(kù)中的相應(yīng)記錄都建立倒排索引,可有效提高網(wǎng)站搜索效率.
DFRS檢索和數(shù)據(jù)庫(kù)檢索采用相同的實(shí)驗(yàn)環(huán)境: 處理器為Inter Core i3 M 380 @ 2.53 GHz; 內(nèi)存為4 Gb; 操作系統(tǒng)為Windows 7旗艦版(64位 SP1); Web服務(wù)器為T(mén)omcat7.0; 數(shù)據(jù)庫(kù)管理系統(tǒng)為MySql; Lucene API為L(zhǎng)ucene 3.6版本.
本文實(shí)驗(yàn)數(shù)據(jù)來(lái)源于學(xué)生學(xué)籍管理系統(tǒng)的數(shù)據(jù)庫(kù)Student,主要利用DFRS對(duì)數(shù)據(jù)庫(kù)中BaseInfo表內(nèi)的數(shù)據(jù)建立索引,進(jìn)而利用該索引進(jìn)行全文檢索. BaseInfo表共有16個(gè)字段,所用字節(jié)數(shù)總計(jì)為337字節(jié),表的結(jié)構(gòu)列于表1.
表1 BaseInfo表的結(jié)構(gòu)Table 1 Structure of BaseInfo table
本文數(shù)據(jù)庫(kù)中BaseInfo表的數(shù)據(jù)內(nèi)容是由Java程序隨機(jī)生成的,為增強(qiáng)實(shí)驗(yàn)結(jié)果的可靠性,共生成了114 386條記錄.
實(shí)驗(yàn)分為兩步:
1) 輸入一個(gè)關(guān)鍵詞,對(duì)不同的記錄條數(shù)、 數(shù)據(jù)庫(kù)檢索和DFRS檢索分別進(jìn)行60次檢索操作,并記錄每次檢索結(jié)果;
2) 輸入多個(gè)關(guān)鍵字,分別取關(guān)鍵詞的個(gè)數(shù)為3,6,9,對(duì)于不同的關(guān)鍵詞個(gè)數(shù),數(shù)據(jù)庫(kù)檢索和DFRS檢索分別進(jìn)行40次檢索操作,并記錄每次檢索的結(jié)果.
對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行統(tǒng)計(jì),將數(shù)據(jù)庫(kù)檢索和DFRS檢索的結(jié)果進(jìn)行對(duì)比,結(jié)果列于表2.
表2 數(shù)據(jù)庫(kù)檢索和DFRS檢索的比較Table 2 Contrast of database retrieval and DFRS retrieval
由表2可見(jiàn),DFRS檢索與數(shù)據(jù)庫(kù)檢索相比在查詢(xún)速度、 查全率及查詢(xún)結(jié)果排序方面都具有較大的優(yōu)勢(shì). 尤其是當(dāng)連續(xù)多次檢索同一個(gè)關(guān)鍵詞時(shí),DFRS可將首次檢索結(jié)果的ID放到結(jié)果集緩存中,從而當(dāng)再次檢索相同的關(guān)鍵詞時(shí),可充分利用首次的結(jié)果緩存,而不必再次對(duì)DFRS的索引庫(kù)進(jìn)行檢索,能有效提高檢索效率.
DFRS檢索的查全率較高,當(dāng)檢索條件包含多個(gè)關(guān)鍵詞時(shí),DFRS系統(tǒng)可將關(guān)鍵詞切分出來(lái),并能通過(guò)詞元(Term)進(jìn)行匹配,可匹配詞序顛倒的記錄,把所有相關(guān)的信息都搜索出來(lái),并呈現(xiàn)給用戶. 而數(shù)據(jù)庫(kù)檢索不具備對(duì)用戶查詢(xún)條件進(jìn)行切分的功能,它的查全率是0,即無(wú)法查出相關(guān)信息.
與數(shù)據(jù)庫(kù)檢索不同,由于DFRS通過(guò)倒排索引結(jié)構(gòu)中記錄的詞頻實(shí)現(xiàn)匹配度計(jì)算,DFRS系統(tǒng)的檢索結(jié)果可根據(jù)用戶的查詢(xún)意圖進(jìn)行排序,以減少用戶篩選無(wú)用信息的時(shí)間,能很好地提高用戶的搜索體驗(yàn),增加用戶的滿意度. 而數(shù)據(jù)庫(kù)檢索的結(jié)果一般是按照記錄在表中的順序進(jìn)行排序的,無(wú)法體現(xiàn)用戶的查詢(xún)意圖,檢索結(jié)果顯得多而雜亂,并會(huì)有很多的無(wú)用信息,容易使用戶產(chǎn)生煩躁的情緒,不利于提高用戶的搜索體驗(yàn).
因此,與數(shù)據(jù)庫(kù)檢索相比,基于Lucene的數(shù)據(jù)庫(kù)全文檢索更適用于網(wǎng)站內(nèi)數(shù)據(jù)的搜索和查詢(xún).
綜上所述,傳統(tǒng)的數(shù)據(jù)庫(kù)檢索無(wú)法對(duì)用戶的查詢(xún)條件進(jìn)行分析,不可以匹配詞序顛倒的記錄,檢索結(jié)果的查全率一般較低,且由于沒(méi)有相似度計(jì)算,使檢索結(jié)果沒(méi)有順序,加長(zhǎng)了用戶的瀏覽時(shí)間,增加了用戶的檢索難度; 數(shù)據(jù)庫(kù)檢索順序地查找表中記錄,使得查找時(shí)間較長(zhǎng),一般無(wú)法快速滿足用戶的查找需求. 與傳統(tǒng)的數(shù)據(jù)庫(kù)檢索相比,基于Lucene的數(shù)據(jù)庫(kù)全文檢索能匹配詞序顛倒的數(shù)據(jù)庫(kù)記錄,有較高的查全率,且具有相似度計(jì)算,檢索結(jié)果可按照用戶需求排序,能提高用戶檢索的效率,同時(shí),它基于特定格式的索引進(jìn)行查詢(xún),可提高檢索速度. 基于Lucene的數(shù)據(jù)庫(kù)全文檢索系統(tǒng)應(yīng)用廣泛,適合于各類(lèi)網(wǎng)站,檢索速度快、 查全率高,比數(shù)據(jù)庫(kù)檢索有更高的搜索體驗(yàn),更能滿足用戶的查詢(xún)需求.
[1]張俊,李魯群,周熔. 基于Lucene的搜索引擎的研究與應(yīng)用 [J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(6): 230-232. (ZHANG Jun,LI Luqun,ZHOU Rong. Research and Application of the Search Engine Based on Lucene [J]. Computer Technology and Development,2013,23(6): 230-232.)
[2]王歡,孫瑞志. 基于領(lǐng)域本體和Lucene的語(yǔ)義檢索系統(tǒng)研究 [J]. 計(jì)算機(jī)應(yīng)用,2010,30(6): 1655-1657. (WANG Huan,SUN Ruizhi. Research of Semantic Retrieval System Based on Domain-Ontology and Lucene [J]. Journal of Computer Applications,2010,30(6): 1655-1657.)
[3]徐巖,朱恒民. 數(shù)據(jù)挖掘與數(shù)據(jù)庫(kù)的集成方法 [J]. 吉林大學(xué)學(xué)報(bào): 信息科學(xué)版,2007,25(2): 228-232. (XU Yan,ZHU Hengmin. Methods of Integrating Data Mining with Database [J]. Journal of Jilin University: Information Science Edition,2007,25(2): 228-232.)
[4]王修力,馬利平. 文本信息檢索的代數(shù)模型綜述 [J]. 吉林大學(xué)學(xué)報(bào): 信息科學(xué)版,2007,25(5): 569-576. (WANG Xiuli,MA Liping. Algebraic Models of Text Retrieval Model: Overview [J]. Journal of Jilin University: Information Science Edition,2007,25(5): 569-576.)
[5]張立巖,呂玲,王井陽(yáng). 基于最大熵算法的全文檢索研究 [J]. 河北科技大學(xué)學(xué)報(bào),2009,30(2): 112-115. (ZHANG Liyan,Lü Ling,WANG Jingyang. Research of Chinese Full Text Information Retrieval System Based on Maximum Entropy Principle [J]. Journal of Hebei University of Science and Technology,2009,30(2): 112-115.)
[6]王茹. 提升全文檢索搜索引擎應(yīng)用問(wèn)題的研究 [J]. 科技與企業(yè),2012(15): 356. (WANG Ru. Research on Promoting Search Engine Application on Full Text Search [J]. Science Technology and Enterprise,2012(15): 356.)
[7]吳鵬飛,馬鳳娟,李文革,等. 開(kāi)源全文檢索引擎Lucene本地化實(shí)踐研究 [J]. 現(xiàn)代圖書(shū)情報(bào)技術(shù),2009(4): 19-22. (WU Pengfei,MA Fengjuan,LI Wenge,et al. Localization of the Open Source Full-Text Retrival Engine Based on Lucene [J]. Modern Books Intelligence Technology,2009(4): 19-22.)
[8]李永春,丁華福. Lucene的全文檢索的研究與應(yīng)用 [J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(2): 12-15. (LI Yongchun,DING Huafu. Research and Application of Full Text Search Based on Lucene [J]. Computer Technology and Development,2010,20(2): 12-15.)
[9]潘以鋒. 基于Lucene的網(wǎng)站全文檢索系統(tǒng)的開(kāi)發(fā) [J]. 廣西教育學(xué)院學(xué)報(bào),2006(5): 63-66. (PAN Yifeng. The Development of Full Text Retrieval System Web Site Based on Lucene [J]. Journal of Guangxi Institute of Education,2006(5): 63-66.)
[10]龔磊,武友新. Lucene全文檢索系統(tǒng)的研究與實(shí)現(xiàn) [J]. 計(jì)算機(jī)與數(shù)字工程,2010,38(5): 64-67. (GONG Lei,WU Youxin. Research and Realization of Full-Text Retrieval Searth System by Lucene [J]. Computer and Digital Engineering,2010,38(5): 64-67.)
[11]戚學(xué)磊. 基于Lucene的站內(nèi)搜索引擎技術(shù)的研究與應(yīng)用 [D]. 太原: 太原理工大學(xué),2011. (QI Xuelei. Research and Application of the Site Search Engine Technology Based on Lucene [D]. Taiyuan: Taiyuan University of Technology,2011.)
[12]郭曉磊,趙利,聶鐵錚. 支持全文檢索的XQuery查詢(xún)處理及優(yōu)化的研究 [J]. 計(jì)算機(jī)與數(shù)字工程,2010,38(8): 32-34. (GUO Xiaolei,ZHAO Li,NIE Tiezheng. Study on the Query Processing and Optimization of XQuery with Full-Text Search [J]. Computer and Digital Engineering,2010,38(8): 32-34.)
[13]義天鵬,陳啟安. 基于Lucene的中文分析器分詞性能比較研究 [J]. 計(jì)算機(jī)工程,2012,38(22): 279-282. (YI Tianpeng,CHEN Qi’an. Comparison Research of Segmentation Performance for Chinese Analyzers Based on Lucene [J]. Compter Engineering,2012,38(22): 279-282.)
[14]鄭榕增,林世平. 基于Lucene的中文倒排索引技術(shù)的研究 [J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(3): 80-83. (ZHENG Rongzeng,LIN Shiping. Research of Chinese Full Texts Inverted Index Based on Lucene [J]. Computer Technology and Development,2010,20(3): 80-83.)
(責(zé)任編輯: 韓 嘯)
DatabaseFull-TextRetrievalBasedonLuceneIndex
YUE Shaomin,LI Wanlong,WANG Lu,GUANG Shunli
(CollegeofComputerScienceandEngineering,ChangchunUniversityofTechnology,Changchun130012,China)
The traditional database retrieval has a lot of problems,such as the slower retrieval speed,the incomplete results,and disorderly retrieval results and so on. This paper designs a database index structure based on the Lucene index structure,the full text retrieval tool and puts forward the concept of record inverted index list. So Website can be retrieved by the keywords in the index library,not following the traditional sequential search way,which greatly improves the retrieval efficiency. At the same time,experimental results show that the database full-text retrieval based-Lucene has the advantages of high recall and the orderly retrieval results.
inverted index; Lucene index; full-text retrieval; index structure
2013-12-09.
岳紹敏(1988—),男,漢族,碩士研究生,從事搜索引擎和智能系統(tǒng)的研究,E-mail: shaomin_yue@163.com. 通信作者: 李萬(wàn)龍(1963—),男,漢族,博士,教授,從事軟件工程與智能系統(tǒng)的研究,E-mail: lwl@mail.ccut.edu.cn.
吉林省自然科學(xué)基金(批準(zhǔn)號(hào): 20130101060JC)和吉林省教育廳“十二五”科學(xué)技術(shù)研究項(xiàng)目(批準(zhǔn)號(hào): 2014132; 2014125).
TP39
A
1671-5489(2014)05-0995-06