特色數(shù)據(jù)庫是指針對用戶的信息需求,對某一學(xué)科或某一專題有價值的信息進(jìn)行收集、分析、評價、處理、儲存,并按照一定標(biāo)準(zhǔn)和規(guī)范將特色資源數(shù)字化,以滿足用戶個性化需求的信息資源庫。醫(yī)學(xué)院校圖書館必須根據(jù)本院的學(xué)科優(yōu)勢、專業(yè)特點(diǎn)等因素,選擇特色專題并結(jié)合本館的相關(guān)應(yīng)用實(shí)際進(jìn)行特色數(shù)據(jù)庫的建設(shè),使所建的特色數(shù)據(jù)庫既有較高的學(xué)術(shù)價值,又具有良好應(yīng)用前景[1]。
徐州醫(yī)學(xué)院(以下簡稱“我?!? 圖書館目前館藏100余萬冊,其中麻醉學(xué)等方面的圖書有1 500多種,還購買了中國知網(wǎng)數(shù)據(jù)庫、萬方數(shù)據(jù)庫、維普期刊資源整合平臺等中文數(shù)據(jù)庫和Web of Science、Springer Link、PubMed等外文數(shù)據(jù)庫,但是這些資源較為分散,載體形式各樣,沒有形成具有專業(yè)特點(diǎn)的特色館藏。
麻醉學(xué)專業(yè)是我校的優(yōu)勢學(xué)科,在全國名列前茅。1986年我校創(chuàng)辦了中國第一個麻醉學(xué)本科專業(yè),建成了國內(nèi)同行中規(guī)模最大、實(shí)力最強(qiáng)的麻醉學(xué)國家重點(diǎn)實(shí)驗(yàn)室,開創(chuàng)了具有中國特色的麻醉學(xué)創(chuàng)新人才教育體系,積累了大量的麻醉學(xué)教學(xué)實(shí)踐資源。現(xiàn)任麻醉學(xué)院院長曹君利教授是“長江學(xué)者”,我校的麻醉學(xué)教學(xué)團(tuán)隊是“國家級優(yōu)秀教學(xué)團(tuán)隊”。
建立麻醉學(xué)特色數(shù)據(jù)庫,集中收集、加工,形成內(nèi)容豐富的、高質(zhì)量的特色化資源,為讀者提供一站式高質(zhì)量的麻醉學(xué)信息資源服務(wù),有利于提高我校的地區(qū)影響力。
特色庫的建設(shè)流程包括平臺的搭建、數(shù)據(jù)源選取、信息采集與加工、信息發(fā)布與更新等環(huán)節(jié)。圖書館將與麻醉學(xué)相關(guān)的書籍、論文、專題講座、教學(xué)課件等各類資源進(jìn)行數(shù)字化處理后,按照統(tǒng)一的標(biāo)準(zhǔn)和規(guī)則,結(jié)合麻醉學(xué)專業(yè)特點(diǎn)和用戶個性化需求,對各類信息資源進(jìn)行有機(jī)整合,形成麻醉學(xué)特色數(shù)據(jù)庫[2]。我校之前的碩士論文庫和隨書光盤庫采用的是暢想之星公司的特色數(shù)據(jù)庫平臺。為了兼容我校之前的數(shù)字資源建設(shè)成果,麻醉學(xué)特色數(shù)據(jù)庫也采用此平臺進(jìn)行建設(shè)。
我校的麻醉特色數(shù)據(jù)庫數(shù)據(jù)來源主要包括圖書館紙質(zhì)資源、數(shù)字資源、麻醉學(xué)院資源和網(wǎng)絡(luò)資源。紙質(zhì)資源的選取主要依據(jù)圖書館收藏的麻醉學(xué)相關(guān)方面的1 500多種圖書,100多種專業(yè)期刊,報紙;數(shù)字資源的選取按照麻醉學(xué)專業(yè)學(xué)科分類體系逐步進(jìn)行篩選,根據(jù)其內(nèi)容質(zhì)量、參考價值和使用頻率等因素進(jìn)行選取[3];麻醉學(xué)院資源的選取主要來自其廣泛收集的高質(zhì)量的麻醉學(xué)教學(xué)課件、講座視頻和學(xué)生獲獎作品;網(wǎng)絡(luò)資源的選取主要是登陸“中華麻醉在線”、“圍術(shù)期患者之家”等國內(nèi)外麻醉學(xué)權(quán)威網(wǎng)站和北大第一醫(yī)院吳新民教授、華西醫(yī)院劉進(jìn)教授、協(xié)和醫(yī)院黃宇光教授等麻醉學(xué)權(quán)威人士的個人主頁、博客等,收集文章觀點(diǎn)、講座視頻和會議視頻等麻醉相關(guān)優(yōu)質(zhì)資源。
將符合條件的麻醉學(xué)相關(guān)圖書、報刊、論文、標(biāo)準(zhǔn)規(guī)范等各類紙質(zhì)文檔數(shù)字化,按統(tǒng)一的標(biāo)準(zhǔn)生成PDF文檔[4],利用虛擬打印機(jī)將搜集到的各種電子文檔(WORD、PPT、 TXT等)按統(tǒng)一的標(biāo)準(zhǔn)轉(zhuǎn)換成PDF文檔,講座等視頻和音頻資源采用Format Factory等軟件按統(tǒng)一的標(biāo)準(zhǔn)轉(zhuǎn)換為基于Windows Media的流媒體文件[5]。同時,還對數(shù)字對象進(jìn)行分類、標(biāo)引,把各種類型的數(shù)字對象加工成可供瀏覽和檢索的數(shù)字資源。
對麻醉學(xué)特色數(shù)據(jù)庫錄入的數(shù)字資源由專人負(fù)責(zé)進(jìn)行審核、校對,對不符合要求的數(shù)字資源給出意見并反饋到加工環(huán)節(jié),審核通過的數(shù)字資源按照規(guī)定統(tǒng)一進(jìn)行發(fā)布[6-14]。我們利用Coreseek 技術(shù)實(shí)現(xiàn)了麻醉學(xué)特色數(shù)據(jù)庫的全文檢索服務(wù)[15],針對本科生、研究生、教師、醫(yī)生等不同的用戶群提供全文檢索、分類導(dǎo)航、欄目導(dǎo)航等功能,方便用戶查找相關(guān)數(shù)字資源 。
圖書館紙質(zhì)資源數(shù)字化是一個浩大而繁瑣的工程。匯文系統(tǒng)中有麻醉學(xué)相關(guān)的紙質(zhì)資源的MARC數(shù)據(jù),圖書館紙質(zhì)資源數(shù)字化、采集、加工的過程中要維護(hù)好相關(guān)著錄和標(biāo)引信息。為了提高特色數(shù)據(jù)庫的建設(shè)效率,減少重復(fù)性操作,我館引入ETL工具,按照特色數(shù)據(jù)庫的相關(guān)數(shù)據(jù)標(biāo)準(zhǔn)進(jìn)行MARC數(shù)據(jù)轉(zhuǎn)換,應(yīng)用于新建的麻醉學(xué)特色數(shù)據(jù)庫中。
由于商業(yè)化的ETL工具(Informatica、Datastage等)費(fèi)用昂貴,我們采用了ETL工具中的Kettle來處理MARC數(shù)據(jù)轉(zhuǎn)換。Kettle是一款開源免費(fèi)的ETL工具,數(shù)據(jù)抽取高效穩(wěn)定,完全能滿足我們建庫過程中轉(zhuǎn)換數(shù)據(jù)的技術(shù)要求。Kettle有transformation和job兩種腳本文件,transformation負(fù)責(zé)完成數(shù)據(jù)的提取與轉(zhuǎn)換,job負(fù)責(zé)完成整個處理流程的相關(guān)控制。
我們首先把篩選出的紙質(zhì)資源的MARC數(shù)據(jù)導(dǎo)出到文本文件marc.txt,然后利用華云馬克數(shù)據(jù)轉(zhuǎn)換工具將MARC數(shù)據(jù)轉(zhuǎn)換為EXCEL文件marc.xls。轉(zhuǎn)換后的EXCEL格式的MARC數(shù)據(jù)主要包括書目名稱、作者、ISBN號、價格、出版地、出版社、出版時間、分類號、分類名、提要、頁數(shù)、附件等信息。將這些信息按照特色數(shù)據(jù)庫的數(shù)據(jù)標(biāo)準(zhǔn)智能導(dǎo)入麻醉學(xué)特色數(shù)據(jù)庫中,可以極大減少圖書館紙質(zhì)資源數(shù)字化的工作量,加快建設(shè)進(jìn)程。暢想之星特色數(shù)據(jù)庫的后臺表結(jié)構(gòu)如下圖1所示。
最后利用Kettle建立transformation,將marc.xls的數(shù)據(jù)轉(zhuǎn)換為符合特色數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù),保存到特色數(shù)據(jù)庫中,以備在紙質(zhì)資源加工時直接引用,減少重復(fù)操作,提高工作效率。由于麻醉學(xué)特色數(shù)據(jù)庫建設(shè)是一個長期的不斷完善的過程,所以我們對MARC數(shù)據(jù)的處理并不是一次簡單的數(shù)據(jù)轉(zhuǎn)化,而是建立一種機(jī)制,只需將要添加轉(zhuǎn)化的MARC數(shù)據(jù)放到指定位置的marc.xls中,系統(tǒng)自動完成相關(guān)的數(shù)據(jù)轉(zhuǎn)化處理。transformation的建立步驟如圖2所示。
第一,transformation中建立EXCEL輸入控件,提取指定位置的marc.xls里的MARC數(shù)據(jù);第二,選取“插入/更新”控件將MARC數(shù)據(jù)按照特色數(shù)據(jù)庫的標(biāo)準(zhǔn)將數(shù)據(jù)更新到特色數(shù)據(jù)庫中時,需要設(shè)置好該控件的數(shù)據(jù)庫連接、目標(biāo)模式和目標(biāo)表等相關(guān)信息,然后以書名、作者、出版社、出版時間和ISBN號的組合條件為主鍵進(jìn)行數(shù)據(jù)的添加或更新處理,將要處理的字段與麻醉特色數(shù)據(jù)庫的目標(biāo)表的字段進(jìn)行映射,建立對應(yīng)關(guān)系。第三,匯文系統(tǒng)中MARC數(shù)據(jù)難免有數(shù)據(jù)不全或不符合標(biāo)準(zhǔn)的數(shù)據(jù),需要給“插入/更新”控件建立錯誤處理,以確保數(shù)據(jù)處理過程中完成符合標(biāo)準(zhǔn)MARC數(shù)據(jù)的處理,輸出不符合標(biāo)準(zhǔn)的MARC數(shù)據(jù)的錯誤信息,以便查找和修正相關(guān)信息。
圖1 暢想之星特色數(shù)據(jù)庫后臺表結(jié)構(gòu)
圖2 Kettle transformation建立設(shè)置
全文檢索有數(shù)據(jù)庫內(nèi)置的全文檢索(Oracle,Mysql,SQL Server,等)和專業(yè)的開源全文檢索引擎(Sphinx,Lucene等)兩種模式。數(shù)據(jù)庫內(nèi)置的全文檢索只需將需要全文檢索的相關(guān)字段建立全文索引,改變查詢條件即可實(shí)現(xiàn)全文檢索功能,但不支持中文分詞、智能關(guān)聯(lián)排序。Lucene是用Java語言開發(fā)的,性能相對較低,對硬件要求高,所以我們利用C++開發(fā)的高性能Sphinx全文檢索引擎進(jìn)行開發(fā),設(shè)計了麻醉學(xué)特色數(shù)據(jù)庫全文檢索系統(tǒng),為用戶提供一站式智能檢索服務(wù)[16]。Coreseek全文檢索引擎是在Sphinx 基礎(chǔ)之上開發(fā)的,增強(qiáng)了中文分詞、中文編碼等中文支持,并根據(jù)中文的相關(guān)特點(diǎn)對搜索結(jié)果的排序進(jìn)行了優(yōu)化。Coreseek全文檢索引擎構(gòu)成及功能見表1。
表1 Coreseek全文檢索引擎構(gòu)成及功能
Sphinx主要支持MySQL 數(shù)據(jù)庫、PostgreSQL 數(shù)據(jù)庫。因?yàn)镻ython目前具備操作所有類型數(shù)據(jù)庫的能力,Coreseek為了擴(kuò)展,增加了Python數(shù)據(jù)源功能[16]。
本數(shù)據(jù)庫利用Coreseek 全文檢索引擎和Python數(shù)據(jù)源程序接口,實(shí)現(xiàn)一個無限擴(kuò)展Coreseek/Sphinx的數(shù)據(jù)獲取功能。以Sql Server數(shù)據(jù)庫為主,可兼容多種類型數(shù)據(jù)庫的分布式全文檢索引擎,向使用者提供更加快速、精確并具有良好數(shù)據(jù)兼容性的全文檢索服務(wù),為以后整合管理自建數(shù)據(jù)庫和商業(yè)數(shù)據(jù)庫等相關(guān)數(shù)字資源鋪平了道路。系統(tǒng)架構(gòu)見圖3。
由于麻醉學(xué)特色數(shù)據(jù)庫平臺是暢想之星,后臺為SQL SERVER數(shù)據(jù)庫,所以要安裝pymssql擴(kuò)展包,然后利用Python的數(shù)據(jù)源功能操作SQL SERVER數(shù)據(jù)庫[6]。
麻醉學(xué)特色數(shù)據(jù)庫客戶端是采用PHP語言實(shí)現(xiàn)的,調(diào)用Sphinx API中的方法并構(gòu)造SphinxClient對象實(shí)現(xiàn)全文檢索。守護(hù)進(jìn)程searched負(fù)責(zé)接受查詢請求,對接收到的檢索內(nèi)容利用LibMMSeg工具進(jìn)行分詞,然后在服務(wù)器上的全文索引文件中進(jìn)行檢索,并把檢索結(jié)果通過API返回給特色數(shù)據(jù)庫客戶端。
圖3 麻醉學(xué)特色數(shù)據(jù)庫全文索引系統(tǒng)模型
Sphinx api 函數(shù)說明SphinxClient為Sphinx提供了面向?qū)ο蟮慕涌赟phinxClient::SetSerer指定所在服務(wù)器地址及端口號SphinxClient::SerMatchMode設(shè)置匹配模式SphinxClient::SetSortMode設(shè)置排序模式SphinxClient::SetWeights設(shè)置權(quán)重信息SphinxClient::Query進(jìn)行全文檢
示例代碼如下:
本文論述了我校圖書館自建麻醉學(xué)特色數(shù)據(jù)庫的整體流程,并詳細(xì)分析了利用Kettle實(shí)現(xiàn)MARC數(shù)據(jù)共享,提高建庫效率和利用Coreseek等技術(shù)實(shí)現(xiàn)麻醉學(xué)特色數(shù)據(jù)庫的全文檢索,為讀者提供最佳的檢索服務(wù)。經(jīng)過測試,本文建設(shè)的麻醉學(xué)特色數(shù)據(jù)庫全文檢索引擎在2GB-4GB 的文本建立的索引上搜索,平均0.1秒內(nèi)獲得結(jié)果,相比Sql server自帶的全文檢索引擎,速度提升近10倍,檢索質(zhì)量也明顯提高。其對Python 數(shù)據(jù)源的支持使我們的麻醉學(xué)特色數(shù)據(jù)庫可以兼容不同類型的異構(gòu)數(shù)據(jù)庫,提高麻醉學(xué)特色數(shù)據(jù)庫的擴(kuò)展性,有利于以后與碩博士論文庫、中國知網(wǎng)、萬方等數(shù)據(jù)庫進(jìn)行資源整合,從而進(jìn)一步促進(jìn)我校麻醉學(xué)專業(yè)的建設(shè)與發(fā)展[17-20]。