高玉平
摘 要: 以往依據(jù)關(guān)鍵詞的檢索方法,在對(duì)海量圖書(shū)檢索信息進(jìn)行查詢(xún)過(guò)程中,無(wú)法滿足海量信息的大批量檢索需求,存在查詢(xún)效率低和誤差高的缺陷。因此,設(shè)計(jì)基于分布式架構(gòu)的海量圖書(shū)檢索信息的快速查詢(xún)系統(tǒng),系統(tǒng)中的各組件通過(guò)并行數(shù)據(jù)庫(kù)和分布式存儲(chǔ)實(shí)現(xiàn)交互。該系統(tǒng)的功能模塊包括用戶管理模塊、數(shù)據(jù)抽取模塊、索引創(chuàng)建模塊、文本查詢(xún)模塊及索引檢索模塊。分析了系統(tǒng)各功能模塊的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程,這些功能模塊共同對(duì)外提供圖書(shū)信息的快速查詢(xún)服務(wù)。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)系統(tǒng)可實(shí)現(xiàn)海量圖書(shū)檢索信息的快速、精確查詢(xún),并且具有較高的索引創(chuàng)建和索引檢索性能。
關(guān)鍵詞: 海量圖書(shū)信息; 信息檢索; 快速查詢(xún)系統(tǒng); 分布式架構(gòu)
中圖分類(lèi)號(hào): TN911?34; TP39 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)06?0005?05
Abstract: The previous keywords retrieval method can not meet the retrieval requirements massive information in the query process of information retrieval for mass books, and has defects of low query efficiency and high error. Therefore, a fast query system for massive bookinformation retrievalthe is designed. Each assembly in the system realizes their interaction by means of parallel database and distributed storage. Function modules of the system are user management module, data extraction module, index creation module, text query module and index retrieval module. The process of each function module′s design and implementation of the system is analysed. These function modules provide a fast query service of book information. The experimental results indicate that the system can realize fast and accurate query of retrieval information of massive books, and has high index creation and index retrieval performance.
Keywords: massive book information; information retrieve; fast query system; distributed framework
0 引 言
隨著信息技術(shù)和互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,當(dāng)前的信息總量不斷增加。圖書(shū)是重要的信息存儲(chǔ)方式,圖書(shū)信息的數(shù)量和規(guī)模也呈現(xiàn)膨脹式增長(zhǎng)趨勢(shì)。從海量圖書(shū)信息中快速獲取用戶所需的數(shù)據(jù),成為相關(guān)人員著手解決的關(guān)鍵問(wèn)題[1?3]。而以往的依據(jù)關(guān)鍵詞的檢索方法,對(duì)海量圖書(shū)檢索信息進(jìn)行查詢(xún)過(guò)程中,無(wú)法滿足海量信息的大批量檢索需求,存在查詢(xún)效率低和誤差高的缺陷[4?5]。文獻(xiàn)[6]通過(guò)分詞方法完成海量圖書(shū)檢索信息的查詢(xún),該方法按照相應(yīng)的規(guī)范和方法對(duì)文本進(jìn)行自主分詞,再對(duì)檢索結(jié)果進(jìn)行詞匯匹配分析,完成圖書(shū)檢索信息的快速查詢(xún),但是該方法無(wú)法對(duì)中文進(jìn)行有效分詞,存在查詢(xún)準(zhǔn)確率低的缺陷。文獻(xiàn)[7]分析了依據(jù)局域網(wǎng)以及純文本種類(lèi)的圖書(shū)信息查詢(xún)系統(tǒng),該種系統(tǒng)需要對(duì)各接口進(jìn)行二次開(kāi)發(fā),存在工作量高的缺陷,導(dǎo)致圖書(shū)信息查詢(xún)效率大大降低。文獻(xiàn)[8]提成了依據(jù)關(guān)鍵詞全文檢索的圖書(shū)信息查詢(xún)方法,但是關(guān)鍵詞通常無(wú)法準(zhǔn)確反映用戶的查詢(xún)意圖,該方法會(huì)向用戶顯示大量的信息,存在查準(zhǔn)率低的問(wèn)題。文獻(xiàn)[9]設(shè)計(jì)了依據(jù)Web的圖書(shū)信息查詢(xún)系統(tǒng),采用Web技術(shù)從海量圖書(shū)檢索信息中查詢(xún)用戶所需信息。但是海量的圖書(shū)信息會(huì)降低用戶查詢(xún)興趣度,并且從海量信息中采集滿足用戶的有價(jià)值信息,需要耗費(fèi)大量的時(shí)間。文獻(xiàn)[10]依據(jù)關(guān)鍵詞的檢索方法,對(duì)海量圖書(shū)檢索信息進(jìn)行查詢(xún)過(guò)程中,無(wú)法滿足海量信息的大批量檢索需求,存在查詢(xún)效率低和誤差高的缺陷。
針對(duì)上述問(wèn)題,設(shè)計(jì)了基于分布式架構(gòu)的海量圖書(shū)檢索信息的快速查詢(xún)系統(tǒng)。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)系統(tǒng)可實(shí)現(xiàn)海量圖書(shū)檢索信息的快速、精確查詢(xún),并且具有較高的索引創(chuàng)建和索引檢索性能,取得了令人滿意的效果。
1 海量圖書(shū)檢索信息的快速查詢(xún)系統(tǒng)優(yōu)化設(shè)計(jì)
1.1 系統(tǒng)的架構(gòu)設(shè)計(jì)
基于分布式架構(gòu)的海量圖書(shū)檢索信息的快速查詢(xún)系統(tǒng)的結(jié)構(gòu)圖如圖1所示。從圖1可以看出該系統(tǒng)包括用戶界面、HTTP攔截器、數(shù)據(jù)庫(kù)連接器、數(shù)據(jù)抽取器、索引器、索引檢索器、文本查詢(xún)器及索引分布式連接器等組件。這些組件間實(shí)現(xiàn)交互的連接件為并行數(shù)據(jù)庫(kù) Oracle和分布式存儲(chǔ)。
用戶界面組件通過(guò)JSP技術(shù)完成界面的展示,通過(guò)Struts2技術(shù)分析用戶提成的圖書(shū)信息查詢(xún)申請(qǐng),采用JDBC技術(shù)訪問(wèn)Oracle數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)的讀寫(xiě)操作,塑造依據(jù)B/S體系結(jié)構(gòu)的Web應(yīng)用程序。
數(shù)據(jù)庫(kù)連接器、數(shù)據(jù)抽取服務(wù)、HTTP攔截器、索引更新服務(wù)組件,用于實(shí)現(xiàn)海量圖書(shū)信息數(shù)據(jù)抽取以及文本索引維護(hù)。數(shù)據(jù)庫(kù)連接器、文本查詢(xún)服務(wù)、HTTP攔截器以及索引檢索服務(wù)組件實(shí)現(xiàn)關(guān)鍵詞查詢(xún),主要有海量圖書(shū)信息全文查詢(xún)和文本信息查詢(xún)兩部分。其中,數(shù)據(jù)庫(kù)連接器實(shí)現(xiàn)JDBC同Oracle數(shù)據(jù)庫(kù)間的連接。數(shù)據(jù)抽取器實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的CRUD處理,分布式連接器實(shí)現(xiàn)應(yīng)用程序同分布式存儲(chǔ)間的連接,進(jìn)而采用相關(guān)服務(wù),完成索引的管理和信息查詢(xún)。HTTP攔截器實(shí)現(xiàn)用戶申請(qǐng)和響應(yīng)申請(qǐng)。索引檢索器可控制分布式存儲(chǔ)中的檢索服務(wù),實(shí)現(xiàn)海量圖書(shū)信息索引的檢索。文本查詢(xún)器完成通過(guò)rowid及其他查詢(xún)條件查詢(xún)數(shù)據(jù)庫(kù)的操作任務(wù)。分布式存儲(chǔ)是依據(jù)全文索引的分布式存儲(chǔ)系統(tǒng),其在Lucene服務(wù)引擎中集成了大量接口,確保用戶調(diào)用相關(guān)操作命令,完成圖書(shū)信息的查詢(xún)操作。分布式存儲(chǔ)可將圖書(shū)信息的全文索引分割成不同的分段、分片以及分片副本,并分別保存在分布式存儲(chǔ)集群中不同數(shù)據(jù)節(jié)點(diǎn)并可對(duì)不同的分片進(jìn)行操作和協(xié)助,確保不同數(shù)據(jù)節(jié)點(diǎn)間通信的均衡化。一個(gè)索引由不同的分片構(gòu)成,各分片可看成微小的搜索引擎。
對(duì)索引進(jìn)行查詢(xún)是分布式處理過(guò)程,也就是分布式存儲(chǔ)應(yīng)查詢(xún)索引中的不同分片中的數(shù)據(jù)復(fù)制,并將查詢(xún)結(jié)果匯總至單一結(jié)果集中。同種硬件條件下,該種查詢(xún)方式可支撐海量的信息負(fù)載查詢(xún),實(shí)現(xiàn)海量圖書(shū)檢索信息的快速查詢(xún)。系統(tǒng)中的數(shù)據(jù)庫(kù)存儲(chǔ)Oracle RAC組件,完成數(shù)據(jù)的并行存儲(chǔ)。
1.2 系統(tǒng)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)
設(shè)計(jì)的海量圖書(shū)檢索信息快速查詢(xún)系統(tǒng)通過(guò)HTTP服務(wù)方式對(duì)外提供服務(wù)。該系統(tǒng)的功能模塊包括用戶管理模塊、數(shù)據(jù)抽取模塊、索引創(chuàng)建模塊、索引重構(gòu)模塊、文本查詢(xún)模塊及索引檢索模塊。這些模塊共同對(duì)外提供圖書(shū)信息的快速查詢(xún)服務(wù)。
系統(tǒng)中的用戶管理模塊對(duì)用戶信息進(jìn)行管理,依據(jù)不同的用戶種類(lèi),修改用戶權(quán)限信息和登錄信息等;數(shù)據(jù)抽取模塊采集數(shù)據(jù)庫(kù)中的文本備份數(shù)據(jù),將數(shù)據(jù)集反饋給索引創(chuàng)建模塊完成數(shù)據(jù)的操作。索引創(chuàng)建模塊讀取采集的文本數(shù)據(jù)集,通過(guò)分布式存儲(chǔ)創(chuàng)建索引引擎,塑造文本索引,同時(shí)將索引寫(xiě)入文件系統(tǒng)中;索引檢索模塊實(shí)現(xiàn)用戶的圖書(shū)信息檢索,可檢索相應(yīng)分區(qū)中的索引數(shù)據(jù)集,并且將獲取的索引數(shù)據(jù)集當(dāng)成文本查詢(xún)模塊的查詢(xún)條件;文本查詢(xún)模塊采集數(shù)據(jù)庫(kù)中文本數(shù)據(jù),將滿足rowid的匹配數(shù)據(jù)集合,通過(guò)多線程手段打包返回。
1.2.1 數(shù)據(jù)抽取模塊的設(shè)計(jì)與實(shí)現(xiàn)
設(shè)計(jì)的數(shù)據(jù)抽取模塊采用Quartz 定時(shí)器技術(shù),在每天的0:00運(yùn)行數(shù)據(jù)抽取模塊的定時(shí)任務(wù),并將抽取出的文本信息結(jié)果集當(dāng)成索引創(chuàng)建模塊的輸入信息。設(shè)置創(chuàng)建索引的終止時(shí)間為定時(shí)任務(wù)的開(kāi)始時(shí)間,采集數(shù)據(jù)庫(kù)中低于該時(shí)間的全部分區(qū)數(shù)據(jù),依據(jù)分區(qū)名創(chuàng)建索引。如果創(chuàng)建索引失敗,則結(jié)束本次創(chuàng)建索引任務(wù),等待下次創(chuàng)建索引任務(wù)開(kāi)始。
Quartz定時(shí)器能夠同J2EE 和J2SE應(yīng)用程序融合,運(yùn)行十個(gè)、百個(gè)、甚至萬(wàn)個(gè)Jobs的日程序表。通過(guò)Java庫(kù)發(fā)布文件(.jar文件)開(kāi)發(fā)Quartz,該文件中存在全部的Quartz功能,這些功能的關(guān)鍵接口(API)為Scheduler接口,該種接口可實(shí)現(xiàn)任務(wù)在日程中的融合和終止。Quartz定時(shí)器內(nèi)的任務(wù)可為Java代碼,定時(shí)器通過(guò)調(diào)用作業(yè),確保作業(yè)處于工作時(shí)間。定時(shí)器可創(chuàng)造可循環(huán)的調(diào)度表。定時(shí)任務(wù)通過(guò)Quartz定時(shí)器,在固定的時(shí)間內(nèi)運(yùn)行數(shù)據(jù)抽取模塊,采集數(shù)據(jù)庫(kù)中不同分區(qū)數(shù)據(jù),并將采集到的數(shù)據(jù)讀入內(nèi)存,向文本索引創(chuàng)建過(guò)程提供依據(jù)。圖2時(shí)序圖描述了定時(shí)任務(wù)采用數(shù)據(jù)抽取模塊完成文本信息采集的流程。
1.2.2 索引創(chuàng)建模塊設(shè)計(jì)與實(shí)現(xiàn)
采用類(lèi)IndexTaskManager完成索引創(chuàng)建模塊,該類(lèi)采用Quartz定時(shí)任務(wù)器申請(qǐng)運(yùn)行,通過(guò)數(shù)據(jù)抽取模塊、數(shù)據(jù)庫(kù)連接請(qǐng)求執(zhí)行以及分布式存儲(chǔ)索引庫(kù)連接器交互,實(shí)現(xiàn)索引創(chuàng)建模塊的運(yùn)行。圖3給出了索引創(chuàng)建模塊的運(yùn)行流程圖。
1.2.3 索引檢索模塊的設(shè)計(jì)與實(shí)現(xiàn)
塑造全文索引過(guò)程中,各分區(qū)名以及索引名間相互對(duì)應(yīng)。依據(jù)不同的發(fā)送日期劃分不同的數(shù)據(jù)分區(qū)。因此,當(dāng)用戶查詢(xún)條件中不存在起始和終止時(shí)間,則檢索索引索引文件;否則按照用戶申請(qǐng)的時(shí)間,檢索相應(yīng)的索引分區(qū)名,極大增強(qiáng)了圖書(shū)信息的檢索效率。索引檢索模塊的結(jié)果為rowid的集合,是文本查詢(xún)模塊進(jìn)行分析的依據(jù)。索引檢索模塊的運(yùn)行流程圖如圖4所示。
1.2.4 文本查詢(xún)模塊的設(shè)計(jì)
通過(guò)文本查詢(xún)器運(yùn)行文本查詢(xún)模塊,其采用數(shù)據(jù)連接器同Oracle 數(shù)據(jù)庫(kù)相連,檢索數(shù)據(jù)庫(kù)分區(qū)表,同時(shí)將檢索結(jié)果反饋給用戶。文本查詢(xún)模塊的時(shí)序圖如圖5所示。文本查詢(xún)模塊采用文本查詢(xún)線程,運(yùn)行數(shù)據(jù)庫(kù)查詢(xún)?nèi)蝿?wù)。該線程采集全局共享緩存區(qū)中的 rowid信息,同時(shí)依據(jù)用戶查詢(xún)條件,構(gòu)成SQL 語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢(xún),最終向數(shù)據(jù)庫(kù)臨時(shí)表中存儲(chǔ)查詢(xún)結(jié)果,為用戶界面進(jìn)行導(dǎo)出數(shù)據(jù)提供服務(wù)。文本查詢(xún)模塊通過(guò)SQL查詢(xún)數(shù)據(jù)庫(kù),因?yàn)?Oracle數(shù)據(jù)庫(kù)要求SQL的最高長(zhǎng)度為4 500個(gè)字符,因此,設(shè)置rowid每次查詢(xún)700個(gè),利用In方式查詢(xún)。文本查詢(xún)模塊的運(yùn)行流程圖如圖6所示。
2 實(shí)驗(yàn)分析
通過(guò)實(shí)驗(yàn)對(duì)本文設(shè)計(jì)的基于分布式架構(gòu)的海量圖書(shū)檢索信息的快速查詢(xún)系統(tǒng)的性能進(jìn)行測(cè)試。實(shí)驗(yàn)通過(guò)表1和表2 的多條件檢索和單關(guān)鍵詞查詢(xún)條件檢索測(cè)試用例,檢測(cè)本文系統(tǒng)的測(cè)試結(jié)果的有效性。
通過(guò)表1和表2可以看出,本文系統(tǒng)可準(zhǔn)確查詢(xún)出多條件檢索和單關(guān)鍵詞查詢(xún)條件檢索結(jié)果,是有效的圖書(shū)檢索信息查詢(xún)系統(tǒng)。
實(shí)驗(yàn)對(duì)基于關(guān)鍵詞的信息查詢(xún)系統(tǒng)和本文系統(tǒng)的性能進(jìn)行檢測(cè)時(shí),主要對(duì)兩種系統(tǒng)的索引創(chuàng)建以及檢索性能進(jìn)行測(cè)試。檢測(cè)數(shù)據(jù)是單臺(tái)Oracle數(shù)據(jù)庫(kù)服務(wù)器中的3.5億條圖書(shū)信息記錄,分布式存儲(chǔ)以及檢索服務(wù)器模擬3個(gè)服務(wù)器,同時(shí)模擬6個(gè)分片以及單個(gè)備份節(jié)點(diǎn)當(dāng)成檢測(cè)環(huán)境,對(duì)本文系統(tǒng)的查詢(xún)性能進(jìn)行檢測(cè)。
分析兩種系統(tǒng)的CPU占用率、內(nèi)存占率、I/O的使用率等指標(biāo),對(duì)本文系統(tǒng)的索引創(chuàng)建性能進(jìn)行檢測(cè)。兩種進(jìn)行圖書(shū)檢索信息查詢(xún)過(guò)程中的索引創(chuàng)建壓力測(cè)試結(jié)果如圖7和圖8所示。
具體性能值如表3,表4所示。
分析圖7、圖8以及表3和表4可得,相對(duì)比基于關(guān)鍵詞的圖書(shū)信息查詢(xún)系統(tǒng),本文系統(tǒng)創(chuàng)建索引的效率和性能較高,并且會(huì)增加文件存儲(chǔ)空間;本文系統(tǒng)的I/O讀寫(xiě)更為頻繁,吞吐量更高。說(shuō)明本文系統(tǒng)能夠完成海量圖書(shū)檢索信息的快速、準(zhǔn)確查詢(xún)。
表5和表6分別是基于關(guān)鍵詞的圖書(shū)信息查詢(xún)系統(tǒng)以及本文系統(tǒng)的索引檢索性能測(cè)試結(jié)果,包括樣本數(shù)量、吞吐量以及平均值三個(gè)參數(shù)。其中,樣本數(shù)量表示發(fā)送到服務(wù)器的全部用戶申請(qǐng)數(shù)量;吞吐量值是系統(tǒng)服務(wù)器單位時(shí)間操作的用戶查詢(xún)申請(qǐng)數(shù);平均值是系統(tǒng)進(jìn)行圖書(shū)信息查詢(xún)過(guò)程中的總運(yùn)行時(shí)間同申請(qǐng)數(shù)的比值。
對(duì)比表5和表6可以看出,本文系統(tǒng)的樣本數(shù)量、吞吐量以及平均值均優(yōu)于基于關(guān)鍵詞的信息查詢(xún)系統(tǒng),本文系統(tǒng)具有較高的索引檢索性能。
通過(guò)上述實(shí)驗(yàn)可得相對(duì)于基于關(guān)鍵詞的信息查詢(xún)系統(tǒng),本文系統(tǒng)的索引創(chuàng)建性能和檢索性能都較高,可以滿足用戶的查詢(xún)需求。
3 結(jié) 論
以往的依據(jù)關(guān)鍵詞的檢索方法,在對(duì)海量圖書(shū)檢索信息進(jìn)行查詢(xún)過(guò)程中,無(wú)法滿足海量信息的大批量檢索需求,存在查詢(xún)效率低和誤差高的缺陷。因此,本文設(shè)計(jì)基于分布式架構(gòu)的海量圖書(shū)檢索信息的快速查詢(xún)系統(tǒng),該系統(tǒng)中的各組件通過(guò)并行數(shù)據(jù)庫(kù)和分布式存儲(chǔ)實(shí)現(xiàn)交互。該系統(tǒng)的功能模塊有用戶管理模塊、數(shù)據(jù)抽取模塊、索引創(chuàng)建模塊、索引重構(gòu)模塊、文本查詢(xún)模塊及索引檢索模塊。分析了系統(tǒng)各功能模塊的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程,這些功能模塊共同對(duì)外提供圖書(shū)信息的快速查詢(xún)服務(wù)。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)系統(tǒng)可實(shí)現(xiàn)海量圖書(shū)檢索信息的快速、精確查詢(xún),并且具有較高的索引創(chuàng)建和索引檢索性能。
參考文獻(xiàn)
[1] 羅芳,李春花,周可,等.基于多屬性的海量Web數(shù)據(jù)關(guān)聯(lián)存儲(chǔ)及檢索系統(tǒng)[J].計(jì)算機(jī)工程與科學(xué),2014,36(3):404?410.
[2] 劉鵬.基于Hadoop的結(jié)構(gòu)化電子病歷存儲(chǔ)檢索系統(tǒng)研究與改進(jìn)[J].中國(guó)數(shù)字醫(yī)學(xué),2015,10(1):40?42.
[3] 孫霞,禹龍,田生偉,等.基于一致性Hash的分布式海量分子檢索模型[J].計(jì)算機(jī)應(yīng)用,2015,35(4):956?959.
[4] 李維乾,李莉,張曉濱,等.Hadoop平臺(tái)下突發(fā)水污染應(yīng)急預(yù)案并行化處置[J].西安工程大學(xué)學(xué)報(bào),2015,29(6):733?739.
[5] 曹鋒.基于細(xì)微特征區(qū)分的海量圖像檢索模型仿真[J].計(jì)算機(jī)仿真,2015,32(9):368?371.
[6] 董岳珂.發(fā)現(xiàn)系統(tǒng)引發(fā)的關(guān)于信息素養(yǎng)教育的思考[J].圖書(shū)館論壇,2014,34(4):58?63.
[7] 宋一兵.基于本體的文獻(xiàn)情報(bào)信息檢索方法研究[J].青島理工大學(xué)學(xué)報(bào),2015,36(4):82?86.
[8] 張廣慶,葛唯益,賀成龍.基于Simhash的海量相似文檔快速搜索優(yōu)化方法[J].指揮信息系統(tǒng)與技術(shù),2015,6(2):61?65.
[9] 萬(wàn)艷麗,雷行云,王巖,等.基于層次化深度學(xué)習(xí)的海量醫(yī)學(xué)影像組織與檢索研究[J].醫(yī)學(xué)信息學(xué)雜志,2015,36(5):46?51.
[10] 黃杰,曹錦梅,努爾艾拉·阿布力孜,等.維吾爾語(yǔ)在圖書(shū)館數(shù)據(jù)庫(kù)查詢(xún)系統(tǒng)中的應(yīng)用[J].電腦與信息技術(shù),2014,22(5):53?55.