李 丹,張 茵(西安交通大學(xué)圖書館)
隨著信息技術(shù)的發(fā)展和廣泛應(yīng)用,計(jì)算機(jī)技術(shù)與圖書文獻(xiàn)編目工作不斷融合,圖書編目從純手工編目、單機(jī)編目很快發(fā)展到聯(lián)合編目;控制號(hào)、種次號(hào)生成也從純手工記錄到軟件取號(hào)。但是,圖書館中西文著錄格式與規(guī)則的不同,形成中、西文種次號(hào)以各自獨(dú)立的方式生成的現(xiàn)狀。另外,各館對(duì)中西文圖書數(shù)據(jù)格式的規(guī)定不同,圖書分類號(hào)的結(jié)構(gòu)構(gòu)成也不盡相同;各圖書館控制號(hào)、種次號(hào)生成方法不同,一些圖書館使用網(wǎng)絡(luò)上公開的通用輔助工具,部分圖書館自行開發(fā)軟件提供生成功能,[1]還有圖書館利用圖書集成系統(tǒng)自帶生成功能;[2]并且圖書館著錄西文圖書時(shí),選取的著者號(hào)碼表不盡相同,有CUTTER號(hào)碼表、漢語著者號(hào)碼表等,且編目員水平參差不齊,對(duì)著者號(hào)的選取不夠重視,形成了各自為政的局面,影響了文獻(xiàn)的排架質(zhì)量及讀者的檢索效率。
西安交通大學(xué)圖書館在編目工作中,借助編目軟件開展業(yè)務(wù),但舊軟件在兼容性和性能擴(kuò)展度方面有一定的局限性。故筆者結(jié)合實(shí)際工作,在圖書館大量采購西文圖書的背景下,開發(fā)出中西文控制號(hào)、索書號(hào)自動(dòng)生成工具(簡(jiǎn)稱CWCCAGT),該工具以擴(kuò)展性良好的整合方式優(yōu)化編目業(yè)務(wù)的開展,可輔助于開展圖書編目,[3]以期為使用第三方軟件實(shí)現(xiàn)生成功能的各類型圖書館和情報(bào)機(jī)構(gòu)提供參考,繼而推廣使用。
西安交通大學(xué)圖書館原有編目工作軟件包括中西文圖書控制號(hào)、種次號(hào)生成程序和西文索書號(hào)生成程序兩個(gè)獨(dú)立的軟件。其中,控制號(hào)軟件作為編目員日常工作必須使用的軟件,從1998年開始投入使用,隨著臺(tái)式電腦操作系統(tǒng)的更新?lián)Q代,原有程序無法在新操作系統(tǒng)上安裝使用,影響到編目的日常工作。并且該軟件安裝繁瑣,網(wǎng)絡(luò)配置復(fù)雜,無法統(tǒng)計(jì)工作數(shù)據(jù)。此外,由于中西文圖書的種次號(hào)、著者號(hào)程序分別為兩個(gè)不同的程序軟件,平臺(tái)不統(tǒng)一,給使用者帶來諸多不便。
基于控制號(hào)、中文索書號(hào)、著者號(hào)、西文索書號(hào)取號(hào)步驟并發(fā)進(jìn)行,不同的操作相互獨(dú)立、又有所關(guān)聯(lián)的現(xiàn)狀,通過梳理現(xiàn)有編目業(yè)務(wù)流程,筆者設(shè)計(jì)出CWCCAGT架構(gòu)(見圖1)。
首先,依據(jù)館藏特征確定數(shù)據(jù)構(gòu)成標(biāo)準(zhǔn)。西安交通大學(xué)圖書館將資源按文種(中文、西文、俄文等)分類,并按資源類型(普通圖書、電子期刊、古籍善本、學(xué)位論文等)分類,構(gòu)成對(duì)應(yīng)的控制號(hào);采用“分類號(hào)+種次號(hào)”的格式描述中文索書號(hào),每個(gè)種次號(hào)按到館先后順序從1開始依次遞增取號(hào);采用“分類號(hào)+著者號(hào)+字母”的構(gòu)成描述西文索書號(hào)。其次,確立數(shù)據(jù)構(gòu)成標(biāo)準(zhǔn)后,分析數(shù)據(jù)操作的對(duì)象和關(guān)系,把系統(tǒng)中的各項(xiàng)功能碎片化,以微操作的形式進(jìn)行封裝。系統(tǒng)功能包括公共模塊、生成功能模塊、數(shù)據(jù)管理模塊和用戶管理模塊(見圖1)。其中,公共模塊不針對(duì)具體對(duì)象,可被各個(gè)功能模塊調(diào)用、共享,包括大數(shù)據(jù)的顯示、數(shù)據(jù)交互等操作;生成功能模塊面向特定的圖書對(duì)象,包括控制號(hào)生成、種次號(hào)生成等;針對(duì)每一類數(shù)據(jù)管理,基于數(shù)據(jù)表,通過調(diào)用對(duì)應(yīng)功能模塊,同時(shí)結(jié)合大數(shù)據(jù)加載、數(shù)據(jù)交互等公共模塊完成數(shù)據(jù)的生成。操作請(qǐng)求和處理結(jié)果在服務(wù)器端和館員端以特定的形式傳遞。

圖1 中西文控制號(hào)、索書號(hào)自動(dòng)生成工具架構(gòu)
該生成工具提供完備的查詢定位和多用戶實(shí)時(shí)并發(fā)的功能;利用分頁技術(shù),提升信息處理速度,使生成有序化;為圖書的分類排架提供規(guī)劃支持,收集大量關(guān)鍵可靠的統(tǒng)計(jì)數(shù)據(jù),記錄圖書數(shù)據(jù)、種次等;并統(tǒng)計(jì)每位編目員的工作量,是館員編目工作的有力輔助工具。
(1)大數(shù)據(jù)顯示。實(shí)踐中往往會(huì)遇到并發(fā)操作十幾萬條數(shù)據(jù)的情況,如果使用傳統(tǒng)InsertItem函數(shù),其插入過程很耗費(fèi)時(shí)間,若采用分頁顯示的方法則可快速加載大量數(shù)據(jù)。加載數(shù)據(jù)的算法如下。
a)把數(shù)據(jù)庫記錄集的數(shù)據(jù)分成PageSize大小的數(shù)據(jù)塊,訪問數(shù)據(jù)庫時(shí),每次數(shù)據(jù)加載只加載一個(gè)數(shù)據(jù)塊到 List Control。
b)變量CurrentPage記錄數(shù)據(jù)塊的序號(hào)。
c)通過點(diǎn)擊BN_CLICKED的4類消息函數(shù)OnBn ClickedFirst(), OnBnClickedprepage(), OnBnClickednext page(),OnBnClickedLast()變換CurrentPage的值,同時(shí)通過指針移動(dòng)來指向每條記錄在記錄集合中的位置,實(shí)現(xiàn)數(shù)據(jù)的分頁加載和單條記錄定位。
分頁顯示時(shí),數(shù)據(jù)庫僅打開一次,數(shù)據(jù)集指針指向位置很關(guān)鍵。其中,查詢、新增等數(shù)據(jù)交互操作都建立在分頁顯示的基礎(chǔ)之上。
由于數(shù)據(jù)量很大,在查找、新增、修改等操作后都需要定位光標(biāo)位置,系統(tǒng)默認(rèn)不提供光標(biāo)定位、高亮的接口。工具構(gòu)建NM_CUSTOMDRAW類消息函數(shù)OnCustomdrawList1,通過函數(shù) Ensurepoint(CStringtemp)觸發(fā)OnCustomdrawList1消息函數(shù),實(shí)現(xiàn)ClistCtrl中指定行高亮顯示。
(2)數(shù)據(jù)交互。數(shù)據(jù)交互操作中最重要的是更新操作。當(dāng)多位用戶在幾乎相同的時(shí)間對(duì)同一條數(shù)據(jù)執(zhí)行更新(如加一)操作時(shí),原有工作軟件會(huì)出現(xiàn)控制號(hào)、分類號(hào)、索書號(hào)生成重號(hào)的現(xiàn)象,重號(hào)會(huì)產(chǎn)生一系列連鎖反應(yīng),一本書的編碼會(huì)直接影響到后續(xù)圖書的編碼,甚至?xí)霈F(xiàn)書庫圖書的批量退架現(xiàn)象。新工具采用加鎖機(jī)制,彌補(bǔ)了功能上的缺陷,提供靈活的并發(fā)控制功能,基本滿足館員并發(fā)操作的需求。
首先,通過刷新按鈕獲取最新號(hào)值(流程見下),然后利用一定的鎖定機(jī)制(見圖2)控制數(shù)據(jù)更新操作,保證數(shù)據(jù)的完整性、連續(xù)性和原始性。更新數(shù)據(jù)庫時(shí),通過調(diào)用Open方法打開ADO記錄集,從而修改記錄集中的字段。刷新流程如下。
a)獲取CListCtrl中當(dāng)前頁選中行的行數(shù)和主鍵字段值(分類號(hào))。
b)從數(shù)據(jù)庫中實(shí)時(shí)讀取 CListCtrl中當(dāng)前頁所有記錄,并重新顯示。
c)高亮顯示a)中的選中行記錄。
自動(dòng)生成工具提供了控制號(hào)生成、中文分類號(hào)生成、著者號(hào)取號(hào)和西文索書號(hào)生成的功能。控制號(hào)生成功能基于文種和文獻(xiàn)類型的靈活組合,生成控制流水號(hào),同時(shí)可以對(duì)字段進(jìn)行初始化和加一。卡特著者號(hào)取號(hào)功能兼任模糊和精確的查詢定位,中西文索書號(hào)生成功能針對(duì)索書號(hào)的不同構(gòu)成進(jìn)行取號(hào),同時(shí)以上功能支持不同類型的數(shù)據(jù)交互操作。
(1)不同類型資源編目中的控制號(hào)生成。隔一定時(shí)間,工作人員需要初始化控制號(hào),之后,通過文種、文獻(xiàn)類型二級(jí)過濾命中對(duì)應(yīng)類型資源,并高亮顯示;加一操作后,即更新控制號(hào),同時(shí)需要把該流水號(hào)寫入Millennium中。由于總是存在多個(gè)用戶同時(shí)生成流水號(hào)的情況,為避免數(shù)據(jù)的不準(zhǔn)確,用戶需要刷新得到實(shí)時(shí)最新數(shù)據(jù)后才能進(jìn)行下一次的控制號(hào)生成(見圖 3)。

圖3 控制號(hào)生成
(2)西文圖書編目中的卡特著者號(hào)取號(hào)。西文圖書按照Cutter著者號(hào)碼表來取著者號(hào)。著者號(hào)一般從個(gè)人責(zé)任者字段取號(hào),對(duì)應(yīng)西安交通大學(xué)圖書館西文MARC記錄中的100字段;如果圖書沒有責(zé)任者,只有編者,而西文圖書編者不作為主要貢獻(xiàn)者,而是以書目題名的第一個(gè)單詞做標(biāo)目取著者號(hào),對(duì)應(yīng)西安交通大學(xué)圖書館西文MARC記錄中的245字段。針對(duì)卡特著者號(hào)取號(hào)規(guī)則,取號(hào)算法如下。
① 通過ADO方式連接Cutter著者號(hào)碼數(shù)據(jù)庫表。② 采用分頁方式在客戶端界面加載Cutter著者號(hào)碼表。③ 根據(jù)輸入的著者名稱進(jìn)行查找。④ 如果可以找到則顯示精確查找結(jié)果:取著者姓氏第一個(gè)字母+著者號(hào);如果卡特表中沒有與查詢的著者姓氏相匹配,把所有著者姓名按照字典序排序后,采用靠前取號(hào)原則,取所有小于查詢姓氏中排序最后的一條記錄。⑤ 加載對(duì)應(yīng)頁面,定位該記錄在數(shù)據(jù)庫中的位置并高亮顯示。
(3)中西文圖書標(biāo)引中的索書號(hào)生成。中文索書號(hào)管理和西文索書號(hào)管理數(shù)據(jù)交互操作類似,只是加一操作的對(duì)象數(shù)據(jù)格式不同。中文圖書加一操作針對(duì)種次號(hào),按圖書到館先后順序從1開始依次遞增取號(hào);西文圖書采用在著者號(hào)后加上小寫字母(如a)依次遞增取號(hào)。西文圖書之所以采用這樣的取號(hào)規(guī)則,是因?yàn)闀?huì)出現(xiàn)同一著者編著的同類主題圖書往往擁有同樣的分類號(hào)和著者號(hào)。以中文索書號(hào)取號(hào)為例,取號(hào)的具體方法是:分類號(hào)取號(hào)頁首次加載顯示分類號(hào)全記錄,支持翻頁查看分類號(hào)信息。館員選取分類號(hào),在分類號(hào)—種次號(hào)表中查找,如果存在相同的分類號(hào),通過數(shù)據(jù)庫記錄集合指針,確定其所在頁數(shù)和在頁面中的位置(函數(shù)Getpagenum(CString temp)實(shí)現(xiàn)),對(duì)選定位置高亮顯示(函數(shù)Ensurepoint(CString temp)實(shí)現(xiàn));同時(shí),展示查找分類號(hào)前兩個(gè)字母開頭的相近記錄,把對(duì)應(yīng)種次號(hào)加一。也可進(jìn)行修改等操作,修改數(shù)據(jù)時(shí),由于該條記錄位置已定,可通過傳遞當(dāng)前頁面變量CurrentPage值和操作的分類號(hào)值給函數(shù)Queryone(CString temp,int page1)來顯示相近條目,同時(shí)高亮顯示最新操作過的條目。如果未找到該分類號(hào),顯示相近記錄,可選擇新增分類號(hào)到表中,種次號(hào)默認(rèn)初始化為1。由于該條記錄的位置未定,則需要Getpagenum和Ensurepoint函數(shù)進(jìn)行定位焦點(diǎn)并高亮顯示。如果還需對(duì)其相近條目進(jìn)行加一、修改等數(shù)據(jù)交互操作,方法和上部分類似(見圖4)。
結(jié)合西安交通大學(xué)圖書館使用中西文控制號(hào)、索書號(hào)自動(dòng)生成工具的實(shí)踐經(jīng)驗(yàn),從多用戶并發(fā)、不同規(guī)模下大數(shù)據(jù)加載時(shí)間、新舊程序操作時(shí)間對(duì)比以及可擴(kuò)展性和通用性等角度對(duì)CWCCAGT進(jìn)行分析測(cè)試,探索未來對(duì)不確定編目控制變化提供支持的可行方法。工具基于VMware虛擬服務(wù)平臺(tái),采用VC++語言編程開發(fā)和SQL Server 2008構(gòu)建數(shù)據(jù)庫。兼容Windows XP、Win7等操作系統(tǒng),遷移原有軟件數(shù)據(jù)10萬余條,其中遷移著者號(hào)1.2萬余條,中文索書號(hào)兩萬余條,西文索書號(hào)6萬余條。

圖4 中文索書號(hào)管理
由于編目員每天需要處理一定數(shù)量的圖書,因此這類工作軟件的首要需求是簡(jiǎn)單易用。經(jīng)測(cè)試,新工具提高了編目員的處理效率,提供可視化友好編目界面,支持多用戶并發(fā)操作,且數(shù)據(jù)的準(zhǔn)確性可以保證。同時(shí),工具考慮編目員工作習(xí)慣,運(yùn)用非模態(tài)對(duì)話框的顯示技術(shù),支持多操作窗口同時(shí)打開。并充分考慮界面設(shè)計(jì)緊湊、小巧,可停靠在顯示器一側(cè),同時(shí)各子界面為長(zhǎng)條形狀,采用多界面互切換技術(shù),方便一個(gè)屏幕可同時(shí)打開其他工作軟件如Millennium。

圖5 不同規(guī)模下大數(shù)據(jù)載入時(shí)間對(duì)比
圖5 給出了大數(shù)據(jù)載入在不同輸入規(guī)模下顯示所花費(fèi)的時(shí)間。優(yōu)化前表示采用Clist Control提供的m_list1.InsertItem (row,"") 和 m_list1.SetItemText(row,index,itemtext)方法的程序,分頁技術(shù)表示筆者采用分頁顯示數(shù)據(jù)優(yōu)化程序。測(cè)試結(jié)果表明:在不同數(shù)據(jù)規(guī)模情況下,優(yōu)化前程序和采用分頁技術(shù)程序所花費(fèi)的數(shù)據(jù)加載時(shí)間相差很大。隨著數(shù)據(jù)規(guī)模的增大(從12,339條到63,355條),優(yōu)化前程序數(shù)據(jù)加載時(shí)間和采用分頁技術(shù)程序數(shù)據(jù)加載時(shí)間的比值越來越大,采用分頁技術(shù)程序數(shù)據(jù)加載執(zhí)行時(shí)間增長(zhǎng)緩慢,而優(yōu)化前程序的執(zhí)行時(shí)間則急劇增長(zhǎng)。
采用分頁技術(shù)相比優(yōu)化前速度大幅度提升,雖然其進(jìn)行數(shù)據(jù)交互操作時(shí),需定位的數(shù)據(jù)不一定在當(dāng)前頁,故需定位頁面位置和該記錄在頁面中的位置,一次性全部載入雖然省去上述步驟,但頻繁地加載數(shù)萬條數(shù)據(jù)往往會(huì)造成數(shù)據(jù)閃爍且加載時(shí)間很長(zhǎng)。
圖6對(duì)比了兩個(gè)館員并發(fā)操作時(shí),著者號(hào)、西文索書號(hào)查詢花費(fèi)的時(shí)間。測(cè)試結(jié)果表明,在同樣的數(shù)據(jù)規(guī)模下,查詢同一個(gè)著者名,優(yōu)化后新工具查詢的性能比舊工具性能高很多,同樣,進(jìn)行西文索書號(hào)查詢的性能比舊工具程序性能高很多倍。

圖6 新舊工具查詢性能對(duì)比(并發(fā)用戶兩人)
筆者還測(cè)試了4個(gè)并發(fā)用戶時(shí),控制號(hào)、中文分類號(hào)、西文索書號(hào)查詢花費(fèi)的時(shí)間。測(cè)試結(jié)果表明,控制號(hào)生成時(shí)間特別少,且新舊工具性能沒有差別,這是因?yàn)榭刂铺?hào)數(shù)據(jù)量本身很小,新工具的優(yōu)化性能沒有得到體現(xiàn)。在數(shù)萬條數(shù)據(jù)規(guī)模下,新舊工具中文分類號(hào)、西文索書號(hào)查詢時(shí)間對(duì)比明顯,因?yàn)樾鹿ぞ咧攸c(diǎn)優(yōu)化大數(shù)據(jù)執(zhí)行效率,這一結(jié)果完全符合計(jì)算機(jī)設(shè)計(jì)量化原理中的“重點(diǎn)關(guān)注常見情形”的指導(dǎo)原則。隨著并發(fā)用戶數(shù)增多,新舊工具執(zhí)行時(shí)間都略有增加但不影響?zhàn)^員的編目操作。
現(xiàn)代化編目手段和技術(shù)帶來便利的同時(shí),并不能因此而減少編目的環(huán)節(jié)和程序,圖書館應(yīng)更加重視對(duì)館藏圖書的深層次加工,及對(duì)信息的深層次開發(fā)和提煉。編目工具所做的整合和優(yōu)化工作不僅可以滿足現(xiàn)有編目的需求,而且可適用于圖書館其他工作需要。① 發(fā)揮編目工作軟件優(yōu)勢(shì),建設(shè)特色館藏。通過對(duì)館藏目錄和藏書狀況分析,及時(shí)了解各類讀者的需求,根據(jù)讀者需求對(duì)館藏紙質(zhì)圖書進(jìn)行深層次加工,如,編制專題特色書目等。② 多角度挖掘軟件數(shù)據(jù),為圖書采購提供參考。通過對(duì)某一類目館藏書目分析,統(tǒng)計(jì)出館藏中某一類圖書所購買種數(shù),宏觀評(píng)估圖書的學(xué)科分布特點(diǎn),為后續(xù)購書提供參考。③ 靈活利用種次號(hào),保證圖書排架質(zhì)量。圖書館書庫空間有限,可充分利用該編目工具的數(shù)據(jù)分析功能,分析同一類號(hào)下的圖書數(shù)目,為圖書排架留出充足空間,不浪費(fèi)書架位置;分析館藏體系中已購西文圖書同一類號(hào)下,同一著者的不同著作,將此類圖書準(zhǔn)確無誤地加以集中,方便讀者找書。
[參考文獻(xiàn)]
[1]陸玉泉,等.外文圖書索書號(hào)自動(dòng)給號(hào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī) (專業(yè)版),2013(4):68-72.
[2]張軼華,等.Aleph系統(tǒng)批量編目功能的研究與實(shí)踐 [J].圖書館雜志,2015,34(1):66-72.
[3] PhilipYoung.Asurveyofbatchcatalogingpracticesand problems[J].Technical Services Quarterly, 2012(29):22-41.