岳紹敏,李萬龍,王 璐,光順利
(長春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,長春 130012)
基于Lucene索引的數(shù)據(jù)庫全文檢索
岳紹敏,李萬龍,王 璐,光順利
(長春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,長春 130012)
針對傳統(tǒng)數(shù)據(jù)庫檢索中檢索速度較慢、 檢索結(jié)果不完整、 檢索結(jié)果排列無序等問題,基于全文檢索工具Lucene索引的結(jié)構(gòu),設(shè)計(jì)一種基于Lucene的數(shù)據(jù)庫索引結(jié)構(gòu),并提出記錄倒排索引鏈表的概念,使網(wǎng)站不用再按照傳統(tǒng)順序查找方式進(jìn)行檢索,而是以索引庫中的關(guān)鍵詞進(jìn)行檢索,提高了檢索效率. 實(shí)驗(yàn)結(jié)果表明,基于Lucene的數(shù)據(jù)庫全文檢索具有查全率高、 檢索結(jié)果排列有序等優(yōu)點(diǎn).
倒排索引; Lucene索引; 全文檢索; 索引結(jié)構(gòu)
隨著信息化水平的不斷提高及Internet的迅速發(fā)展,需要存儲(chǔ)的數(shù)據(jù)越來越多,各大網(wǎng)站的信息量不斷增長[1],如具有海量數(shù)據(jù)的電子商務(wù)類網(wǎng)站. 目前針對網(wǎng)站的傳統(tǒng)數(shù)據(jù)庫檢索技術(shù)遇到了諸多問題[2],如檢索效率較低、 響應(yīng)時(shí)間過長、 檢索結(jié)果與用戶的查詢意圖符合度低、 檢索結(jié)果的信息不完整、 檢索結(jié)果不能按照用戶的查詢意圖進(jìn)行排序和無法提高用戶搜索體驗(yàn)等.
信息檢索指在信息集合中進(jìn)行查詢,找出符合用戶需求的信息. 在信息檢索技術(shù)中,全文檢索具有通用性,且最具實(shí)用性[3]. 全文檢索將用戶的查詢請求與文本中的每個(gè)詞進(jìn)行比較,與數(shù)據(jù)庫檢索的字段匹配相比,全文搜索引擎的優(yōu)點(diǎn)是查詢?nèi)娑浞?可以給用戶最全面、 最廣泛的搜索結(jié)果[4]; 且全文檢索是將用戶輸入的關(guān)鍵詞與索引庫內(nèi)相關(guān)信息的索引詞進(jìn)行匹配,與數(shù)據(jù)庫檢索的順序搜索相比,提高了檢索效率.
本文借鑒全文搜索工具Lucene的索引結(jié)構(gòu),設(shè)計(jì)一種針對數(shù)據(jù)庫信息的倒排索引結(jié)構(gòu),構(gòu)建了基于Lucene的數(shù)據(jù)庫全文檢索系統(tǒng)(database full-text retrieval system based-Lucene,DFRS). 實(shí)驗(yàn)結(jié)果表明,DFRS系統(tǒng)顯著提高了數(shù)據(jù)庫檢索的效率和查全率,可使用戶獲得更好的搜索體驗(yàn).
Lucene是一個(gè)全文檢索引擎工具包,具有開放的源代碼,并提供了完整的索引引擎和查詢引擎及部分文本分析引擎[5](主要針對英文與德文). Lucene從總體上分為索引功能和檢索功能兩部分[6]. Lucene的索引引擎可將文本內(nèi)容切詞,并對其建立索引,然后加入索引庫. Lucene的查詢引擎會(huì)按照用戶的查詢條件進(jìn)行搜索,并給用戶返回相關(guān)結(jié)果[7]. 與傳統(tǒng)全文檢索引擎相比,Lucene具有如下特點(diǎn):
1) Lucene的索引文件格式是自定義的,與應(yīng)用平臺無關(guān),它以8位字節(jié)為基礎(chǔ),兼容系統(tǒng)或不同平臺的應(yīng)用可以使用同一索引文件;
2) 基于傳統(tǒng)檢索引擎的倒排索引,Lucene增加了分塊索引功能,可對新的待索引文件建立小索引[8],并通過與已有的索引合并,可對索引文件進(jìn)行優(yōu)化,提升檢索效率;
3) Lucene具有與語言和文件格式無關(guān)的文本分析接口,當(dāng)創(chuàng)建索引文件時(shí),只要用索引器接收Token流即可完成操作;
4) Lucene擁有已經(jīng)實(shí)現(xiàn)了的查詢引擎,用戶可直接利用該引擎實(shí)現(xiàn)自己的查詢功能,并可自己定制查詢語法規(guī)則,如布爾查詢和分組查詢等[9].
Lucene索引的結(jié)構(gòu)分為4層,分別為Index層、 Segment層、 Document層和Field層[10]. Lucene索引Index由若干段(Segment)組成,每段由若干文檔(Document)組成,每個(gè)文檔由若干字段(Field)組成,每個(gè)字段由若干詞元(Term)組成.
由于Lucene索引是按照一定結(jié)構(gòu)組織的,所以查詢時(shí)不用在原數(shù)據(jù)源內(nèi)進(jìn)行順序搜索,可直接從索引文件中查找[11],搜索的范圍得以降低,因此查詢的速度和效率較快.
Lucene的數(shù)據(jù)源不是某個(gè)具體形式,而是一個(gè)文檔的結(jié)構(gòu),用戶進(jìn)行索引的源可以有多種形式[12],如html文件、 pdf文件、 字符串或數(shù)據(jù)庫表中的記錄等.
2.1DFRS的結(jié)構(gòu)
圖1 基于Lucene的數(shù)據(jù)庫全文檢索系統(tǒng)結(jié)構(gòu)Fig.1 Structure of database full-text retrievalsystem based-Lucene
基于Lucene的數(shù)據(jù)庫全文檢索系統(tǒng)(DFRS)分為建立索引和查詢索引兩部分. 建立索引模塊周期性地從數(shù)據(jù)庫收集信息,對采集到的信息進(jìn)行相應(yīng)的詞法、 語法分析,對其建立索引,然后把索引添加到索引庫. DFRS可根據(jù)用戶輸入的信息,獲取用戶的查詢條件,并對查詢條件進(jìn)行分析,然后從索引庫中進(jìn)行搜索,最后把相關(guān)的查詢結(jié)果呈現(xiàn)給用戶. 基于Lucene的數(shù)據(jù)庫全文檢索系統(tǒng)結(jié)構(gòu)如圖1所示.
2.2數(shù)據(jù)庫索引的結(jié)構(gòu)
數(shù)據(jù)庫索引結(jié)構(gòu)與Lucene索引結(jié)構(gòu)類似,也分為4層,分別為Index層、 Segment層、 Record層、 Field層. 與其不同的是,數(shù)據(jù)庫索引結(jié)構(gòu)第2層存儲(chǔ)的不是文檔(Document),而是數(shù)據(jù)庫的記錄(Record)信息. Index由若干段(Segment)組成,每段由若干記錄(Record)組成,每條記錄由若干字段(Field)組成,每個(gè)字段由若干詞元(Term)組成,詞元是最小的索引概念單位.
建立索引時(shí),并不是每個(gè)Record都馬上添加到同一個(gè)索引文件,它們首先被寫入到不同的小文件,再合并成一個(gè)大索引文件,每個(gè)小文件都是一個(gè)Segment. 用戶提供的源是數(shù)據(jù)庫表中的一條記錄,一條記錄經(jīng)過索引后,以一個(gè)Record的形式存儲(chǔ)在索引文件中. 一個(gè)Record可包含多個(gè)字段信息,如表中一條記錄可包含“姓名”、 “性別”、 “身高”、 “個(gè)人簡介”等字段,這些字段信息以Field的形式保存在Record中. Term是搜索的最小單位,表示字段內(nèi)容經(jīng)過分解后得到的一個(gè)詞,如字段內(nèi)容是“張明喜歡唱歌,同時(shí)也喜歡跳舞”,分詞后得到的Term有“張明”、 “喜歡”、 “唱歌”、 “跳舞”等.
創(chuàng)建數(shù)據(jù)庫索引的步驟:
1) 獲取信息源. 按一定周期讀取數(shù)據(jù)庫表中的記錄,作為創(chuàng)建數(shù)據(jù)索引的信息源;
2) 信息篩選. 在一條記錄中,要存放哪些字段才能達(dá)到信息完整且避免垃圾信息,如學(xué)生信息,要存儲(chǔ)的是學(xué)生的“姓名”、 “籍貫”、 “個(gè)人簡介”等,而“視力”、 “肺活量”等其他信息一般不用存儲(chǔ);
3) 信息分析. 將篩選好的信息進(jìn)行分詞,對中文和英文使用的分詞器,一般用標(biāo)準(zhǔn)分詞器(StandardAnalyzer)[13];
4) 建立索引庫. 把記錄寫入到索引庫,并根據(jù)分詞器進(jìn)行分詞、 建立索引,索引庫可建立到硬盤內(nèi),也可建立在內(nèi)存中;
5) 把記錄添加到索引庫.
2.3倒排索引
圖2 倒排索引結(jié)構(gòu)Fig.2 Structure of inverted index
倒排索引是一種索引方法,被用于存儲(chǔ)在全文搜索下某個(gè)關(guān)鍵詞在一條記錄或一組記錄中存儲(chǔ)位置的映射[14]. 這種索引表中的每項(xiàng)都包含一個(gè)屬性值和具有該屬性值的各記錄地址. 由于不是由記錄確定屬性值,而是由屬性值確定記錄的位置,因而稱為倒排索引. 由于倒排索引通過屬性值確定記錄的位置,所以檢索速度比普通的順序查詢快很多. 此外,不同類型的信息都可存儲(chǔ)在倒排鏈表中,使倒排索引具有較大的靈活性. 倒排索引結(jié)構(gòu)如圖2所示. 由圖2可見,記錄頻次(Record Frequency,RF)表示共有多少記錄包含此詞(Term); 詞頻率(Frequency)表示該記錄中包含了幾個(gè)該詞(Term). 當(dāng)進(jìn)行檢索時(shí)可參考該參數(shù),將更符合用戶意圖的搜索結(jié)果排在前列,可減輕用戶的檢索負(fù)擔(dān),并增加用戶的搜索體驗(yàn).
數(shù)據(jù)庫索引以倒排索引的形式存在. 基于Lucene的數(shù)據(jù)庫全文檢索系統(tǒng)的索引中,每條記錄由若干字段(Field)組成,每個(gè)字段由若干詞元(Term)組成. 在倒排索引中,不同的Term組成一個(gè)詞典文件,記錄頻次(RF)是每個(gè)Term在所有記錄中出現(xiàn)的次數(shù),指針指向每個(gè)Term所對應(yīng)的位置文件和頻率文件. 通過指針,可找到關(guān)鍵詞Term在數(shù)據(jù)庫記錄中的位置信息和頻率信息.
下面用兩條數(shù)據(jù)庫記錄為例給出創(chuàng)建記錄倒排鏈表的過程:
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è)字典,對字典按照英文字母排序,合并相同詞Term成為記錄倒排鏈表,如圖3所示.
圖3 記錄倒排鏈表示意圖Fig.3 Sketch map of record inverted list
例如,對于詞(Term)“學(xué)?!?共有兩條記錄包含該詞(Term),從而詞(Term)后面的記錄鏈表共有兩項(xiàng),第一項(xiàng)表示包含“學(xué)校”的第一條記錄,即1號記錄,該記錄中“學(xué)?!背霈F(xiàn)了1次; 第二項(xiàng)表示包含“學(xué)校”的第二條記錄,即2號記錄,此記錄中“學(xué)?!背霈F(xiàn)了1次.
2.4基于索引的查詢過程
首先獲取用戶的查詢語句,然后對查詢語句進(jìn)行詞法分析,提取出單詞和關(guān)鍵字,再根據(jù)語法規(guī)則形成語法樹,最后利用搜索索引得到符合語法樹的記錄.
以語法樹“word1 AND word2 NOT word3”為例,搜索索引分為以下幾步:
1) 在反向索引表中,分別找出包含word1,word2,word3的記錄鏈表;
2) 對包含word1,word2的鏈表進(jìn)行合并操作,得到既包含word1又包含word2的記錄鏈表;
3) 將該鏈表與word3的記錄鏈表進(jìn)行差操作,去除包含word3的記錄,從而得到既包含word1又包含word2且不包含word3的記錄鏈表,該記錄鏈表就是符合檢索條件的記錄.
2.5DFRS檢索和數(shù)據(jù)庫檢索的比較
DFRS將數(shù)據(jù)庫表中的記錄通過全文索引建立反向索引(倒排索引); 對于LIKE查詢,傳統(tǒng)的數(shù)據(jù)庫索引無法使用,需要對數(shù)據(jù)庫的記錄逐個(gè)遍歷,進(jìn)行GREP式的模糊匹配. 有索引的DFRS檢索和數(shù)據(jù)庫檢索相比,搜索速度明顯提高.
2.5.1 匹配效果 DFRS通過詞元(Term)進(jìn)行匹配,可匹配詞序顛倒的記錄; 數(shù)據(jù)庫對多個(gè)關(guān)鍵詞的模糊匹配,可以使用諸如“l(fā)ike %吉林%航空%”的查詢語句,但不能匹配詞序顛倒的記錄,如“xxx航空xxx吉林”.
2.5.2 匹配度 DFRS在對檢索結(jié)果排序時(shí),參考了關(guān)鍵詞的詞頻率,能將匹配度(相似度)較高的結(jié)果排在前面,從而減輕用戶的檢索負(fù)擔(dān),并提高用戶的搜索體驗(yàn); 數(shù)據(jù)庫沒有匹配度的控制,如分別有記錄中“喜歡”這個(gè)詞出現(xiàn)6次和出現(xiàn)1次的,但是檢索結(jié)果相同.
2.5.3 結(jié)果顯示 DFRS通過特別的算法,將顯示匹配度最高的前100條結(jié)果,檢索結(jié)果有序排列,且結(jié)果集是緩沖式小批量讀取的; 數(shù)據(jù)庫的檢索結(jié)果沒有順序,且會(huì)返回所有的結(jié)果集,在匹配條目非常多時(shí)(如上萬條)需要大量的內(nèi)存存放這些臨時(shí)結(jié)果集.
因此,通過全文索引對數(shù)據(jù)庫中的相應(yīng)記錄都建立倒排索引,可有效提高網(wǎng)站搜索效率.
DFRS檢索和數(shù)據(jù)庫檢索采用相同的實(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ù)器為Tomcat7.0; 數(shù)據(jù)庫管理系統(tǒng)為MySql; Lucene API為Lucene 3.6版本.
本文實(shí)驗(yàn)數(shù)據(jù)來源于學(xué)生學(xué)籍管理系統(tǒng)的數(shù)據(jù)庫Student,主要利用DFRS對數(shù)據(jù)庫中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ù)庫中BaseInfo表的數(shù)據(jù)內(nèi)容是由Java程序隨機(jī)生成的,為增強(qiáng)實(shí)驗(yàn)結(jié)果的可靠性,共生成了114 386條記錄.
實(shí)驗(yàn)分為兩步:
1) 輸入一個(gè)關(guān)鍵詞,對不同的記錄條數(shù)、 數(shù)據(jù)庫檢索和DFRS檢索分別進(jìn)行60次檢索操作,并記錄每次檢索結(jié)果;
2) 輸入多個(gè)關(guān)鍵字,分別取關(guān)鍵詞的個(gè)數(shù)為3,6,9,對于不同的關(guān)鍵詞個(gè)數(shù),數(shù)據(jù)庫檢索和DFRS檢索分別進(jìn)行40次檢索操作,并記錄每次檢索的結(jié)果.
對實(shí)驗(yàn)結(jié)果進(jìn)行統(tǒng)計(jì),將數(shù)據(jù)庫檢索和DFRS檢索的結(jié)果進(jìn)行對比,結(jié)果列于表2.
表2 數(shù)據(jù)庫檢索和DFRS檢索的比較Table 2 Contrast of database retrieval and DFRS retrieval
由表2可見,DFRS檢索與數(shù)據(jù)庫檢索相比在查詢速度、 查全率及查詢結(jié)果排序方面都具有較大的優(yōu)勢. 尤其是當(dāng)連續(xù)多次檢索同一個(gè)關(guān)鍵詞時(shí),DFRS可將首次檢索結(jié)果的ID放到結(jié)果集緩存中,從而當(dāng)再次檢索相同的關(guān)鍵詞時(shí),可充分利用首次的結(jié)果緩存,而不必再次對DFRS的索引庫進(jìn)行檢索,能有效提高檢索效率.
DFRS檢索的查全率較高,當(dāng)檢索條件包含多個(gè)關(guān)鍵詞時(shí),DFRS系統(tǒng)可將關(guān)鍵詞切分出來,并能通過詞元(Term)進(jìn)行匹配,可匹配詞序顛倒的記錄,把所有相關(guān)的信息都搜索出來,并呈現(xiàn)給用戶. 而數(shù)據(jù)庫檢索不具備對用戶查詢條件進(jìn)行切分的功能,它的查全率是0,即無法查出相關(guān)信息.
與數(shù)據(jù)庫檢索不同,由于DFRS通過倒排索引結(jié)構(gòu)中記錄的詞頻實(shí)現(xiàn)匹配度計(jì)算,DFRS系統(tǒng)的檢索結(jié)果可根據(jù)用戶的查詢意圖進(jìn)行排序,以減少用戶篩選無用信息的時(shí)間,能很好地提高用戶的搜索體驗(yàn),增加用戶的滿意度. 而數(shù)據(jù)庫檢索的結(jié)果一般是按照記錄在表中的順序進(jìn)行排序的,無法體現(xiàn)用戶的查詢意圖,檢索結(jié)果顯得多而雜亂,并會(huì)有很多的無用信息,容易使用戶產(chǎn)生煩躁的情緒,不利于提高用戶的搜索體驗(yàn).
因此,與數(shù)據(jù)庫檢索相比,基于Lucene的數(shù)據(jù)庫全文檢索更適用于網(wǎng)站內(nèi)數(shù)據(jù)的搜索和查詢.
綜上所述,傳統(tǒng)的數(shù)據(jù)庫檢索無法對用戶的查詢條件進(jìn)行分析,不可以匹配詞序顛倒的記錄,檢索結(jié)果的查全率一般較低,且由于沒有相似度計(jì)算,使檢索結(jié)果沒有順序,加長了用戶的瀏覽時(shí)間,增加了用戶的檢索難度; 數(shù)據(jù)庫檢索順序地查找表中記錄,使得查找時(shí)間較長,一般無法快速滿足用戶的查找需求. 與傳統(tǒng)的數(shù)據(jù)庫檢索相比,基于Lucene的數(shù)據(jù)庫全文檢索能匹配詞序顛倒的數(shù)據(jù)庫記錄,有較高的查全率,且具有相似度計(jì)算,檢索結(jié)果可按照用戶需求排序,能提高用戶檢索的效率,同時(shí),它基于特定格式的索引進(jìn)行查詢,可提高檢索速度. 基于Lucene的數(shù)據(jù)庫全文檢索系統(tǒng)應(yīng)用廣泛,適合于各類網(wǎng)站,檢索速度快、 查全率高,比數(shù)據(jù)庫檢索有更高的搜索體驗(yà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的語義檢索系統(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ù)庫的集成方法 [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]張立巖,呂玲,王井陽. 基于最大熵算法的全文檢索研究 [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)用問題的研究 [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]吳鵬飛,馬鳳娟,李文革,等. 開源全文檢索引擎Lucene本地化實(shí)踐研究 [J]. 現(xiàn)代圖書情報(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)的開發(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查詢處理及優(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. 通信作者: 李萬龍(1963—),男,漢族,博士,教授,從事軟件工程與智能系統(tǒng)的研究,E-mail: lwl@mail.ccut.edu.cn.
吉林省自然科學(xué)基金(批準(zhǔn)號: 20130101060JC)和吉林省教育廳“十二五”科學(xué)技術(shù)研究項(xiàng)目(批準(zhǔn)號: 2014132; 2014125).
TP39
A
1671-5489(2014)05-0995-06