鄧彬
(中國(guó)科學(xué)技術(shù)信息研究所,北京 100000)
科技文獻(xiàn)信息是科研人員研究科學(xué)技術(shù)及創(chuàng)新的基礎(chǔ)[1-3]。以往查詢科技文獻(xiàn)信息時(shí),依據(jù)索引卡片查詢文獻(xiàn)資料位置并獲取資料。隨著信息技術(shù)及互聯(lián)網(wǎng)技術(shù)的發(fā)展與普及,信息檢索技術(shù)應(yīng)運(yùn)而生[4-6]。當(dāng)前信息檢索技術(shù)雖已為用戶提供便利,但仍然有改進(jìn)空間,用戶在使用搜索引擎時(shí),如何迅速將用戶所需信息及其隱式需求排列在搜索結(jié)果前排,已成為研究人員所研究的熱門話題。杜瑞忠等人提出利用雙向索引查詢關(guān)鍵字方式,在簡(jiǎn)化搜索動(dòng)態(tài)更新過(guò)程的同時(shí)對(duì)信息進(jìn)行加密,該方案雖然提升了搜索速度及信息安全性,但未考慮用戶隱式需求導(dǎo)致搜索結(jié)果關(guān)聯(lián)度不夠[7];包翔等人提出以圖像內(nèi)容為基礎(chǔ)創(chuàng)建檢索系統(tǒng)框架,通過(guò)提取圖像特征包組成視覺(jué)字典,并由直方圖形式描述圖像特征獲取檢索結(jié)果,該系統(tǒng)檢索結(jié)果精準(zhǔn)度及關(guān)聯(lián)度較高,但由于局限性強(qiáng)等原因只適用于圖像檢索,無(wú)法滿足用戶對(duì)文字類需求信息的檢索需求[8]。
分布式緩存是利用分布式網(wǎng)絡(luò)存儲(chǔ)技術(shù),將熱門信息存儲(chǔ)至離系統(tǒng)用戶最近的應(yīng)用或設(shè)備中,可提升用戶訪問(wèn)信息速度[9-10],因此,設(shè)計(jì)了基于分布式緩存的科技文獻(xiàn)信息動(dòng)態(tài)檢索系統(tǒng)。
科技文獻(xiàn)信息動(dòng)態(tài)檢索系統(tǒng)能夠分解科技文獻(xiàn)網(wǎng)頁(yè)信息為結(jié)構(gòu)化數(shù)據(jù)信息,并將該信息存儲(chǔ)至系統(tǒng)數(shù)據(jù)庫(kù)內(nèi),通過(guò)系統(tǒng)軟件運(yùn)行實(shí)現(xiàn)數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)統(tǒng)計(jì)、關(guān)聯(lián)及排序等工作,為用戶提供最需要的科技文獻(xiàn)信息??萍嘉墨I(xiàn)信息動(dòng)態(tài)檢索系統(tǒng)總體結(jié)構(gòu)如圖1 所示??萍嘉墨I(xiàn)信息動(dòng)態(tài)檢索系統(tǒng)的檢索流程為:用戶在用戶層輸入檢索需求后傳輸至處理層數(shù)據(jù)采集模塊,該模塊將采集到的信息通過(guò)網(wǎng)絡(luò)層通信模塊傳輸至數(shù)據(jù)層科技文獻(xiàn)信息數(shù)據(jù)庫(kù)存儲(chǔ),采用分布式緩存方法對(duì)用戶以往檢索需求進(jìn)行處理,并建立分布式存儲(chǔ)模塊內(nèi)的熱數(shù)據(jù)庫(kù)及冷數(shù)據(jù)庫(kù);將科技文獻(xiàn)信息數(shù)據(jù)庫(kù)內(nèi)的信息通過(guò)網(wǎng)絡(luò)層傳輸至處理層檢索處理模塊,利用該模塊內(nèi)科技文獻(xiàn)信息動(dòng)態(tài)檢索方法對(duì)數(shù)據(jù)庫(kù)內(nèi)信息進(jìn)行檢索處理,并與數(shù)據(jù)層分布式存儲(chǔ)模塊內(nèi)關(guān)聯(lián)數(shù)據(jù)進(jìn)行排序重組,獲取檢索結(jié)果后輸出至用戶層展示檢索結(jié)果。
圖1 檢索系統(tǒng)總體結(jié)構(gòu)
1.2.1 通信模塊
通信模塊由Web 服務(wù)技術(shù)組成,結(jié)合Web 服務(wù)技術(shù)采用Java EE 應(yīng)用程序搭建分層模型,完成檢索系統(tǒng)中各層數(shù)據(jù)的傳輸。通信模塊Web 服務(wù)技術(shù)結(jié)構(gòu)如圖2 所示。
圖2 通信模塊Web服務(wù)技術(shù)結(jié)構(gòu)
Web 服務(wù)技術(shù)的網(wǎng)絡(luò)層主要是對(duì)處理層與數(shù)據(jù)層的信息進(jìn)行交互處理,同時(shí)處理接收請(qǐng)求或返回信息等;處理層主要為數(shù)據(jù)采集模塊提供服務(wù),通過(guò)對(duì)各大搜索網(wǎng)站內(nèi)的網(wǎng)頁(yè)信息進(jìn)行解析處理,并將處理后的數(shù)據(jù)存儲(chǔ)至數(shù)據(jù)層,同時(shí)向數(shù)據(jù)庫(kù)發(fā)出檢索服務(wù)請(qǐng)求,整理數(shù)據(jù)庫(kù)及分布式存儲(chǔ)模塊與用戶請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù);用戶層的用戶界面顯示由JSP動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)完成。通信模塊Web 服務(wù)技術(shù)結(jié)構(gòu)可以降低各模塊間的耦合程度,還可以分離業(yè)務(wù)間處理邏輯與數(shù)據(jù)顯示情況,便于日后修改或擴(kuò)充用戶層與處理層。
1.2.2 分布式存儲(chǔ)模塊
分布式存儲(chǔ)模塊內(nèi)置控制器,模塊內(nèi)數(shù)據(jù)的分布式緩存均由控制器控制。控制器采用CPLD技術(shù)實(shí)現(xiàn)讀寫緩存數(shù)據(jù)、加載模式寄存器以及數(shù)據(jù)刷新等操作[11]。該控制器為通用型,適用于控制所有存儲(chǔ)芯片,且控制器參數(shù)可通過(guò)系統(tǒng)程序設(shè)置,初步設(shè)置控制器突發(fā)長(zhǎng)度為1、2、4、8 字及全頁(yè);刷新時(shí)間為自動(dòng)刷新,可依據(jù)實(shí)際情況進(jìn)行調(diào)整;CAS 延遲時(shí)間為2 或3 個(gè)時(shí)鐘周期;支持的數(shù)據(jù)寬度為8位、16位、32位及64位;支持存儲(chǔ)芯片讀寫緩存數(shù)據(jù)等全部命令操作??刂破鹘Y(jié)構(gòu)如圖3 所示。
圖3 分布式存儲(chǔ)模塊控制器結(jié)構(gòu)
控制器內(nèi)刷新模塊用于設(shè)置及調(diào)整刷新時(shí)間;管理模塊為管理芯片Bank 地址切換;命令仲裁器的作用是適時(shí)選擇合適的執(zhí)行命令;控制定時(shí)器用于為時(shí)序信號(hào)進(jìn)行定時(shí);配置模塊主要配置存儲(chǔ)芯片模式寄存器,設(shè)置各種可編程模式;地址生成器用于生成芯片行、列地址及選通信號(hào);命令生成器為輸出命令仲裁結(jié)果,生成芯片控制信號(hào)控制芯片。
1.3.1 動(dòng)態(tài)檢索的分布式緩存方法
系統(tǒng)在數(shù)據(jù)層分布式存儲(chǔ)模塊設(shè)計(jì)動(dòng)態(tài)檢索的分布式緩存方法,通過(guò)用戶使用系統(tǒng)所產(chǎn)生的最近訪問(wèn)時(shí)間及歷史訪問(wèn)次數(shù)制定緩存替換策略,插入熱數(shù)據(jù)至系統(tǒng)緩存數(shù)據(jù)中,替換溫?cái)?shù)據(jù)及冷數(shù)據(jù),提升用戶訪問(wèn)數(shù)據(jù)的緩存命中率,降低由系統(tǒng)緩存產(chǎn)生的計(jì)算開(kāi)銷及不必要的磁盤訪問(wèn)。動(dòng)態(tài)檢索的分布式緩存方法流程如圖4 所示。
圖4 動(dòng)態(tài)檢索的分布式緩存方法流程
用戶通過(guò)登錄檢索系統(tǒng)進(jìn)入用戶端,系統(tǒng)依據(jù)用戶對(duì)數(shù)據(jù)的最近訪問(wèn)時(shí)間及歷史訪問(wèn)次數(shù)判斷數(shù)據(jù)熱度,并將熱度最高的數(shù)據(jù)優(yōu)先排列形成數(shù)據(jù)序列,數(shù)據(jù)序列中的數(shù)據(jù)按照從前到后的順序依次為熱數(shù)據(jù)、溫?cái)?shù)據(jù)、冷數(shù)據(jù),當(dāng)緩存占用率超出系統(tǒng)緩存閾值時(shí)剔除冷數(shù)據(jù)緩存。若用戶發(fā)起讀寫請(qǐng)求,采用邏輯劃分方式將原有數(shù)據(jù)序列劃分為多個(gè)數(shù)據(jù)序列進(jìn)行更新,可以降低鎖粒度及I/O 時(shí)延。
考慮到系統(tǒng)發(fā)生網(wǎng)絡(luò)擁塞或內(nèi)存節(jié)點(diǎn)故障時(shí)會(huì)導(dǎo)致緩存信息丟失,動(dòng)態(tài)檢索的分布式緩存采用定期打包的方式整理緩存數(shù)據(jù)并寫入邏輯,利用檢查點(diǎn)將打包后的緩存數(shù)據(jù)持久化至數(shù)據(jù)庫(kù)中[12]。針對(duì)已丟失的緩存信息,可以依據(jù)數(shù)據(jù)庫(kù)日志信息進(jìn)行重建。該方式可以確保檢索系統(tǒng)在緩存信息丟失的狀態(tài)下正常運(yùn)行,增強(qiáng)檢索系統(tǒng)的容錯(cuò)性。
動(dòng)態(tài)檢索的分布式緩存方法核心是緩存替換策略,緩存替換策略的作用是提升緩存命中率,當(dāng)檢索系統(tǒng)緩存已滿時(shí)需及時(shí)剔除冷數(shù)據(jù),選取用戶最近未訪問(wèn)且訪問(wèn)次數(shù)最少的冷數(shù)據(jù)緩存作為剔除對(duì)象,以此類推獲取更多內(nèi)存空間緩存新數(shù)據(jù)[13]。該策略以用戶最近及歷史訪問(wèn)記錄為基礎(chǔ),判斷冷數(shù)據(jù)范圍并替換用戶需求數(shù)據(jù),同時(shí)設(shè)計(jì)緩存完整數(shù)據(jù)與僅緩存元數(shù)據(jù)的兩級(jí)緩存,既提升了數(shù)據(jù)緩存量,又確保了冷數(shù)據(jù)剔除的準(zhǔn)確性。緩存替換策略鏈表結(jié)構(gòu)如圖5 所示。
圖5 緩存替換策略鏈表結(jié)構(gòu)
最近訪問(wèn)數(shù)據(jù)鏈表與最常訪問(wèn)數(shù)據(jù)鏈表中的數(shù)據(jù)塊均依據(jù)訪問(wèn)時(shí)間進(jìn)行有限序列排列。若用戶正在訪問(wèn)某數(shù)據(jù),檢索系統(tǒng)緩存該數(shù)據(jù)塊時(shí),將該數(shù)據(jù)塊插入最近訪問(wèn)數(shù)據(jù)鏈表中,以此替換鏈表中最后一個(gè)數(shù)據(jù)塊;若該鏈表中即將被替換的數(shù)據(jù)塊被用戶二次訪問(wèn),則將該數(shù)據(jù)塊插入最常訪問(wèn)數(shù)據(jù)鏈表1號(hào)數(shù)據(jù)塊處,其余數(shù)據(jù)塊后退一步,淘汰鏈表末尾數(shù)據(jù)塊完成緩存替換。
若用戶訪問(wèn)某數(shù)據(jù)時(shí),緩存占用率超出系統(tǒng)緩存閾值,則刪除鏈表內(nèi)最近最少使用的數(shù)據(jù)元素,同時(shí)將與該數(shù)據(jù)對(duì)應(yīng)的元數(shù)據(jù)信息存儲(chǔ)至最近訪問(wèn)淘汰頁(yè)鏈表與最常訪問(wèn)淘汰頁(yè)鏈表中,淘汰頁(yè)鏈表僅存儲(chǔ)訪問(wèn)索引,不存儲(chǔ)數(shù)據(jù)。在刪除鏈表數(shù)據(jù)元素至淘汰頁(yè)鏈表時(shí),鏈表內(nèi)數(shù)據(jù)元素均傳輸至與其相對(duì)應(yīng)的淘汰頁(yè)鏈表內(nèi),并釋放被刪除數(shù)據(jù)塊在原鏈表內(nèi)所占空間[14]。
若用戶所訪問(wèn)的數(shù)據(jù)在淘汰頁(yè)鏈表內(nèi),則需從數(shù)據(jù)庫(kù)內(nèi)讀取用戶所需數(shù)據(jù)元素,同時(shí)將該數(shù)據(jù)插入最近訪問(wèn)數(shù)據(jù)鏈表中。動(dòng)態(tài)檢索的分布式緩存方法能夠通過(guò)各淘汰頁(yè)鏈表內(nèi)發(fā)生的偽命中次數(shù),動(dòng)態(tài)調(diào)整最近訪問(wèn)數(shù)據(jù)鏈表與最常訪問(wèn)數(shù)據(jù)鏈表應(yīng)包含元素的數(shù)量。
動(dòng)態(tài)檢索的分布式緩存方法通過(guò)建立元數(shù)據(jù)緩存,迅速讀取剛被淘汰的緩存數(shù)據(jù),且依據(jù)用戶最近訪問(wèn)時(shí)間及歷史訪問(wèn)次數(shù)識(shí)別熱數(shù)據(jù),提升緩存內(nèi)數(shù)據(jù)塊被用戶選擇的潛力。
1.3.2 科技文獻(xiàn)信息動(dòng)態(tài)檢索
檢索系統(tǒng)處理層檢索處理模塊選取Lucene 項(xiàng)目設(shè)計(jì)完整科技文獻(xiàn)信息動(dòng)態(tài)檢索引擎,該項(xiàng)目是一個(gè)以Java 為基礎(chǔ)的可擴(kuò)展開(kāi)源搜索項(xiàng)目,具有全文檢索及搜尋引擎架構(gòu)。檢索系統(tǒng)在Lucene 搜尋引擎架構(gòu)的基礎(chǔ)上,通過(guò)確定檢索科技文獻(xiàn)目標(biāo)信息并重組相似類型科技文獻(xiàn)索引信息,提升系統(tǒng)檢索速度。為確定檢索科技文獻(xiàn)目標(biāo)信息位置,分別從目標(biāo)信息位于標(biāo)題處及正文處兩個(gè)方面進(jìn)行優(yōu)化確定,設(shè)置檢索系統(tǒng)科技文獻(xiàn)信息數(shù)據(jù)庫(kù)中目標(biāo)信息位于標(biāo)題處的權(quán)重表達(dá)式為:
式中,a為檢索科技文獻(xiàn)目標(biāo)信息;d為數(shù)據(jù)庫(kù)內(nèi)全部網(wǎng)絡(luò)資源的索引信息;δ為目標(biāo)信息出現(xiàn)于標(biāo)題內(nèi)的次數(shù);ωa∈d,title為目標(biāo)信息在查詢標(biāo)題處的位置權(quán)重;σa∈d,title為目標(biāo)信息的關(guān)鍵詞數(shù)量。
設(shè)置檢索系統(tǒng)科技文獻(xiàn)信息數(shù)據(jù)庫(kù)中目標(biāo)信息位于正文處的權(quán)重表達(dá)式為:
式中,ωa∈d,text與θ分別為目標(biāo)信息出現(xiàn)于正文內(nèi)的位置權(quán)重及次數(shù);σa∈d,text為目標(biāo)信息的關(guān)鍵詞數(shù)量;|f|為數(shù)據(jù)庫(kù)內(nèi)待檢索特征詞的全部數(shù)量。確定檢索科技文獻(xiàn)目標(biāo)信息位置后,設(shè)計(jì)科技文獻(xiàn)信息動(dòng)態(tài)檢索流程,如圖6 所示。用戶在檢索系統(tǒng)搜索引擎中輸入檢索信息,檢索系統(tǒng)從科技文獻(xiàn)信息數(shù)據(jù)庫(kù)提取待索引信息數(shù)據(jù)為字符串型數(shù)據(jù),分詞處理字符串同時(shí)寫入索引文件內(nèi),讀取索引文件內(nèi)索引并對(duì)熱數(shù)據(jù)庫(kù)中的索引信息進(jìn)行分詞處理,依據(jù)搜索索引判斷兩種信息是否為相似類型信息,若是相似類型信息,則將兩種信息依據(jù)關(guān)聯(lián)程度進(jìn)行排序重組,獲取檢索結(jié)果;若不是相似類型信息,則將該信息返回至分布式存儲(chǔ)模塊內(nèi)等待下次搜索。
圖6 科技文獻(xiàn)信息動(dòng)態(tài)檢索流程
采用動(dòng)態(tài)檢索的分布式緩存方法建立元數(shù)據(jù)緩存并獲取熱數(shù)據(jù),利用目標(biāo)信息在標(biāo)題處及正文處的位置權(quán)重,設(shè)置檢索系統(tǒng)的加載內(nèi)容,通過(guò)Lucene搜尋引擎架構(gòu)檢測(cè)數(shù)據(jù),獲取子類元數(shù)據(jù)同時(shí)與熱數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)進(jìn)行關(guān)聯(lián)排序重組,完成基于分布式緩存的科技文獻(xiàn)信息動(dòng)態(tài)檢索系統(tǒng)軟件設(shè)計(jì)。
為驗(yàn)證所研究基于分布式緩存的科技文獻(xiàn)信息動(dòng)態(tài)檢索系統(tǒng)整體性能,實(shí)驗(yàn)將系統(tǒng)應(yīng)用于某科技大學(xué)圖書(shū)館內(nèi),該學(xué)校師生共計(jì)22 578人,圖書(shū)館建筑面積5 219 m2,館內(nèi)藏書(shū)25 萬(wàn)余冊(cè)。實(shí)驗(yàn)選取自動(dòng)化測(cè)試工具JMeter 模擬不同的工作負(fù)載,并設(shè)置負(fù)載工具測(cè)試參數(shù)為128;系統(tǒng)存儲(chǔ)大小為256 GB;分布式存儲(chǔ)模塊大小為64 GB;分布式對(duì)象存儲(chǔ)大小為1 MB。
IOPS(系統(tǒng)每秒讀寫次數(shù))是衡量系統(tǒng)存儲(chǔ)性能的關(guān)鍵指標(biāo)。為驗(yàn)證系統(tǒng)在負(fù)載狀態(tài)下的運(yùn)行性能,通過(guò)JMeter 自動(dòng)化測(cè)試工具為系統(tǒng)加載不同程度的請(qǐng)求數(shù)據(jù),并對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行隨機(jī)讀寫操作請(qǐng)求,獲取測(cè)試系統(tǒng)IOPS 及讀寫寬帶等數(shù)據(jù)。不同負(fù)載下設(shè)計(jì)系統(tǒng)運(yùn)行性能測(cè)試結(jié)果如圖7 所示。通常以4 kB 大小的數(shù)據(jù)塊為基準(zhǔn)測(cè)試系統(tǒng)IOPS,采用JMeter 測(cè)試工具對(duì)系統(tǒng)加載4~40 kB 的請(qǐng)求數(shù)據(jù),并對(duì)系統(tǒng)進(jìn)行隨機(jī)讀寫的操作,IOPS 隨機(jī)讀取值為1 700~1 900,隨機(jī)寫入值為230~510,通過(guò)IOPS 隨機(jī)讀寫值可知,設(shè)計(jì)系統(tǒng)存儲(chǔ)數(shù)據(jù)不卡頓,隨機(jī)讀寫速度較快;圖7(b)中設(shè)置請(qǐng)求數(shù)據(jù)量為1~10 MB,隨機(jī)讀取帶寬為820~870 MB/s,隨機(jī)寫入帶寬為410~450 MB/s,由此可知,設(shè)計(jì)系統(tǒng)傳輸數(shù)據(jù)能力較強(qiáng),系統(tǒng)響應(yīng)時(shí)間較快。
圖7 檢索系統(tǒng)運(yùn)行性能測(cè)試結(jié)果
全類平均正確率(MAP)是評(píng)價(jià)檢索系統(tǒng)多次查詢的平均準(zhǔn)確率衡量指標(biāo),為驗(yàn)證設(shè)計(jì)系統(tǒng)的檢索性能,實(shí)驗(yàn)選取500 位在校學(xué)生作為研究對(duì)象,分別操作文獻(xiàn)[7]基于雙向索引的高效連接關(guān)鍵字查詢動(dòng)態(tài)檢索加密系統(tǒng)、文獻(xiàn)[8]基于特征包的數(shù)字圖書(shū)館圖像檢索系統(tǒng)以及設(shè)計(jì)系統(tǒng),每人檢索10 條科技文獻(xiàn)信息,通過(guò)MAP 指標(biāo)對(duì)比三個(gè)系統(tǒng)的檢索性能,對(duì)比結(jié)果如圖8 所示。
圖8 三個(gè)系統(tǒng)檢索性能對(duì)比結(jié)果
由圖8 可知,通過(guò)50 位在校學(xué)生的多次查詢對(duì)比結(jié)果可知,三個(gè)系統(tǒng)的MAP 值均在0.85 以上,總體檢索性能都比較良好,其中系統(tǒng)的MAP 值始終位于0.95 以上,MAP 值明顯高于文獻(xiàn)[7]及文獻(xiàn)[8]系統(tǒng),用戶輸入的檢索關(guān)鍵詞與系統(tǒng)檢索結(jié)果關(guān)聯(lián)度越高,MAP 值越高,由此可知系統(tǒng)的檢索性能較好。
在傳統(tǒng)檢索系統(tǒng)中,文獻(xiàn)信息內(nèi)出現(xiàn)的檢索字詞都會(huì)作為檢索結(jié)果展示出來(lái),導(dǎo)致用戶體驗(yàn)感較差。基于此,設(shè)計(jì)基于分布式緩存的科技文獻(xiàn)信息動(dòng)態(tài)檢索系統(tǒng),采用分布式緩存及動(dòng)態(tài)檢索的方式,同時(shí)考慮用戶最近經(jīng)常訪問(wèn)的文獻(xiàn)信息與檢索字詞在標(biāo)題處及正文處的位置權(quán)重,結(jié)合數(shù)據(jù)庫(kù)內(nèi)最新科技文獻(xiàn)資料,為用戶檢索出最優(yōu)質(zhì)的檢索結(jié)果,滿足用戶檢索需求,提升用戶的檢索體驗(yàn)。