宋麗梅,高海平
(東北大學(xué) 圖書館,遼寧 沈陽 110819)
根據(jù)教育部高等學(xué)校圖書情報工作指導(dǎo)委員會《普通高等學(xué)校圖書館評估指標》的要求,普通高等學(xué)校圖書館文獻資源建設(shè)方面需要達到每個學(xué)生平均100 冊圖書,中外文圖書年更新率達到新書品種與館藏種數(shù)之比為3%及以上[1]。 不斷增長的圖書總量和有限的館舍空間面積使得大多數(shù)高校圖書館存在書多空間少、倒架工作頻繁、圖書易亂架且難尋找等現(xiàn)象。 隨著圖書館空間再造的進行,高校圖書館的藏書空間被再一次劃分出去,分館的建立以及密集書架的配置雖然在一定程度上解決了圖書多、空間少的問題,但如何更有效地利用現(xiàn)有空間合理管理圖書,為圖書提供科學(xué)的定位、排架,依然是所有圖書館面臨的實際問題。
國內(nèi)現(xiàn)有的圖書定位排架方法主要有兩種。
(1)基于RFID 技術(shù)的圖書定位排架。 根據(jù)不同的實現(xiàn)技術(shù),可以分為動態(tài)定位模式和靜態(tài)定位模式[2]。 其中,動態(tài)定位模式需要對現(xiàn)有的書架進行改裝或更換,成本過高,所以一直沒有得到廣泛應(yīng)用;目前,絕大多數(shù)圖書館采取的是靜態(tài)定位模式,它可通過全書定位法、首書定位法及鄰居定位法等方法定位圖書[3],這種模式下的圖書定位準確率會隨著使用時間和書架調(diào)整變得越來越低,用戶體驗感降低[4],重新定位圖書又會耗時耗力。 總結(jié)RFID 在國內(nèi)使用的具體情況可以看出,RFID 技術(shù)在定位圖書方面初次定位準確率很高,能很好地發(fā)現(xiàn)“藏匿”的圖書,也利于圖書的盤點,但隨著時間的推移及新書的增加,其定位的準確度會迅速下降,重新定位需要大量的人力物力。
(2)利用軟件建立虛擬排架系統(tǒng)進行圖書的定位排架。 這種方法主要利用索書號對比的方式,對數(shù)據(jù)庫中的圖書進行虛擬排架,并將圖書所在的地理位置通過前臺網(wǎng)頁展示給讀者,便于讀者查找圖書[5-7]。 早期的系統(tǒng)是通過圖書條碼進行定位的[8],通過人工掃描的方式將單元書架的首末圖書條形碼輸入系統(tǒng),系統(tǒng)進行索書號的對比,將處于首末圖書索書號區(qū)間內(nèi)的圖書定位至此書架中。 有部分圖書館也利用系統(tǒng)對密集書庫進行管理,如北京大學(xué)圖書館昌平儲存館密集書庫管理系統(tǒng)[9]。 為了增加用戶體驗度,很多圖書館會結(jié)合Flash 或網(wǎng)頁技術(shù),將圖書的書架定位信息通過生動直觀的圖形、動畫等形式展現(xiàn)給讀者[10-11]。 通過數(shù)據(jù)庫的方式進行圖書定位排架,具有實用性強、投入資金少的特點,但從系統(tǒng)的設(shè)計來看,大部分的系統(tǒng)都是從邏輯計算角度實現(xiàn)圖書的排架,并未將圖書的增加、剔舊、流通等因素考慮進去,不利于書架的合理運用。 為保證系統(tǒng)與現(xiàn)實的排架一一對應(yīng),需要進行多次的串架工作。
對比上述兩種圖書定位排架方法的優(yōu)缺點,結(jié)合圖書館的經(jīng)費、圖書數(shù)量及實際需求,筆者認為,對于藏書量較大、館藏空間不足且經(jīng)費有限的圖書館,設(shè)計一個基于數(shù)據(jù)分析的圖書定位排架系統(tǒng)具有一定必要性。
根據(jù)圖書館圖書定位排架原則,系統(tǒng)需要實現(xiàn)以下功能:從圖書館角度,系統(tǒng)能夠合理安排各類圖書的位置,盡量避免串架、倒架的發(fā)生;從讀者角度,能夠通過查詢功能查找到圖書所在的位置;此外,圖書的物理位置與邏輯位置要求一致。 為了盡可能地科學(xué)利用館藏空間,采用數(shù)據(jù)分析的方法,將各類圖書的首書分配至固定的架位,其余圖書與首書的索書號進行對比,根據(jù)圖書的厚度及架位的長度確定待排架圖書的位置,并將該書的位置信息通過網(wǎng)頁的形式傳遞給讀者,實現(xiàn)圖書的定位排架功能。
圖書索書號又稱排架分類號,是館員排架和讀者查找圖書的依據(jù)。 圖書定位排架系統(tǒng)需要將圖書按照索書號進行排序,簡單按照ASCII 碼對圖書的索書號進行字符大小排序,會因索書號構(gòu)成中的種次號、分類號中“.”“-”等特殊符號,使虛擬的排列次序與實體圖書的排列次序有較大出入。 此時,需要對索書號進行預(yù)處理,處理目的是使實體圖書與虛擬排架系統(tǒng)的排列順序一一對應(yīng)。 將索書號按照符號“/”分隔成若干個子字符串(通常是2 ~3個區(qū)間),然后將第一區(qū)間字符串中的字符“-”替換成“&”,這種替換主要是為了使第一段字符串能夠按照計算機排序。然后將所有的數(shù)據(jù)依照第一區(qū)間字符串、第二區(qū)間字符串、第三區(qū)間字符串、條形碼進行排序,這樣書目列表的順序就是圖書在實際上架過程中的順序。
圖書的厚度直接影響到一層書架圖書的數(shù)量,在具體操作過程中,對每本圖書進行厚度的測量是不可行的。 考慮到數(shù)據(jù)的可獲取性及精準度,采用抽樣的方法對紙張的厚度進行估測,并通過提取ALEPH 系統(tǒng)中的215 載體形態(tài)項圖書頁碼字段,計算每層書架能擺放的圖書總量。
2.2.1 紙張厚度的確定
根據(jù)實際情況,為了合理地取得紙張厚度值,采取抽樣調(diào)查的方式,隨機抽取精裝圖書、平裝圖書各100 本,提取每本書的書內(nèi)頁碼(不包括封面),測量每本書的厚度。 采取進位制精確至毫米,利用公式:每張紙的厚度=圖書厚度/(頁數(shù)/2)(精度確定為小數(shù)點后4 位), 最后算得每張紙厚度大約為0.031 mm。
2.2.2 系統(tǒng)圖書頁碼的提取與處理
為了獲得每本圖書的頁碼,使用ALEPH 系統(tǒng)的服務(wù)功能,分兩個步驟完成。
步驟1:先形成一個檢索記錄集。 在編目模塊中,選擇中文文獻庫,運行“服務(wù)”—“檢索記錄”—“檢索編目記錄ret-01”先檢索出需要的數(shù)據(jù),填寫輸出文件名,選擇要導(dǎo)出的編目記錄系統(tǒng)號,提交任務(wù),得到一個檢索結(jié)果集。 根據(jù)實際情況,選擇具體的檢索字段。
步驟2:利用print-08 輸出結(jié)果集,在任務(wù)管理器“批處理日志”中,查看本步驟是否執(zhí)行成功,成功后進行下一步操作。 在“輸入文件”中填寫步驟1 中得到的結(jié)果集名稱,在“輸出文件”中填寫想要保存成的文件名,可以加上字母與輸入文件名進行區(qū)分。 在“報表格式”中選擇“作者|題名|出版社|頁碼”,提交任務(wù)。 待任務(wù)完成后,在“任務(wù)管理器”—“文件列表”中可以看到執(zhí)行后的文件,將該文件下載到本地即可。
由于系統(tǒng)提取的頁碼格式不統(tǒng)一,且存在書前頁、正文頁碼、書后頁碼及圖版頁碼等形式,因此將所有的頁碼相加作為最后的書頁數(shù)量較為合理。 為了方便程序計算圖書的總頁碼,需要預(yù)先將羅馬數(shù)字轉(zhuǎn)換為對應(yīng)的阿拉伯?dāng)?shù)字。 對于只標注冊數(shù)的數(shù)據(jù),需要人工標注,以備后期利用網(wǎng)絡(luò)或?qū)嶓w書查找圖書的頁碼信息。
2.2.3 館舍容書量的計算
館舍容量的測定指架位的總長度。 判斷一個圖書館能容納圖書數(shù)量的多少,主要看放置圖書的書架規(guī)制和數(shù)量。 這是一個相對穩(wěn)定的數(shù)據(jù),根據(jù)各館的實際情況很容易獲得。 以高校圖書館書架為例,書架通常分為A,B 兩面,每面有6 層的單元書架,若干書架合理排序進行空間布置。 對相同規(guī)格的書架進行測量,能很容易算出圖書館總架位的長度。
2.2.4 圖書動態(tài)數(shù)據(jù)管理
圖書排架的難點在于圖書的數(shù)量是動態(tài)變化的。如果圖書館的館藏空間足夠大,或者剔舊工作完美進行,那么按照圖書館學(xué)的理論,圖書館書架的滿架率在70%左右,數(shù)值太大不利于找書,增加新書時倒架的頻率過高,數(shù)值太低則浪費書架的藏書空間。 在圖書館空間比較緊缺的情況下,需要考慮圖書的動態(tài)數(shù)據(jù),如藏書量、借閱量、增長量及剔舊量。 借閱量主要受借閱周期、借閱頻率、借閱時長影響;增長量是計算某個小類圖書的年平均增長量。 結(jié)合圖書的厚度數(shù)據(jù),利用公式(L藏書量+L增長量-L借閱量-L剔舊量)/L館藏容量可以計算出每類圖書占據(jù)的書架長度比例,進而確定一定空間內(nèi)架位首書的位置,確保避免頻繁地串架、倒架。
2.2.5 圖書位置信息顯示
將圖書館中所有的書架按照館藏地、樓層、書架排號、面信息、架信息、層信息及位信息劃分為一個基本的單元,圖書的位置信息可顯示為“2 排A 面3 架6層3 位”。 在程序?qū)崿F(xiàn)過程中,需要定位每類圖書的首書位置,再將已擺放圖書的總厚度與書架的寬度對比,當(dāng)總厚度超過書架的寬度時,圖書轉(zhuǎn)向下一層開始擺放。 此外,當(dāng)分類號改變時,圖書也需要轉(zhuǎn)向下一層開始擺放,部分程序代碼如圖1 所示。
圖1 部分程序代碼
根據(jù)系統(tǒng)分析及相關(guān)數(shù)據(jù)運行要求,抽取圖書館部分數(shù)據(jù)作為實驗數(shù)據(jù),進行代碼的初步運行,檢測本系統(tǒng)的可操作性。 實驗過程中采用SQL 數(shù)據(jù)庫,利用intelij idea 作為開發(fā)工具,Spring,SpringMVC,MyBatis 作為框架版本,tomcat8.5 作為應(yīng)用服務(wù)器開發(fā)了一個適用于Windows 系統(tǒng)的圖書定位排架系統(tǒng),并采用HTML5,CSS 和JS 相結(jié)合的方式將圖書的定位排架信息以網(wǎng)頁的形式展現(xiàn)給讀者,整個系統(tǒng)主要包括系統(tǒng)數(shù)據(jù)庫、后臺數(shù)據(jù)處理模塊、后臺數(shù)據(jù)維護模塊和前臺網(wǎng)頁檢索與展示模塊。
選取SQL 作為系統(tǒng)數(shù)據(jù)庫,將實驗數(shù)據(jù)按照館藏地的不同分別創(chuàng)建不同的表單,分別為:hnsk,hnkj,nhsk,nhkj。 4個表單中的字段信息有:條碼號、題名、著者、ISBN、出版社、出版年、館藏地、索書號、頁碼。將這4個表單導(dǎo)入數(shù)據(jù)庫中,利用java 語言將索書號進行重新排序,計算每本圖書的長度,根據(jù)架位比例確定個別架位的首書,對比形成另外一個館藏地信息表單。 表單中包含的字段信息有:條碼、題名、館藏地、排、面、架、層、位,此表單中的圖書位置信息將以網(wǎng)頁的形式提供給讀者。 當(dāng)新書到館后,通過更新基礎(chǔ)表單的方式,實時更新圖書的位置信息。
SSM(Spring +SpringMVC +MyBatis) 框 架 集 由Spring,MyBatis 兩個開源框架整合而成(SpringMVC是Spring 中的部分內(nèi)容),常作為數(shù)據(jù)源較簡單的Web 項目的框架。 在本系統(tǒng)的開發(fā)過程中,利用了SSM 框架搭建平臺。
其中,Spring 在配置文件中可以指定使用特定的參數(shù)去調(diào)用實體類的構(gòu)造方法來實例化對象;SpringMVC 在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet 承擔(dān)中介或前臺的職責(zé),將用戶請求通過HandlerMapping 去匹配Controller,Controller就是具體對應(yīng)請求所執(zhí)行的操作。 SpringMVC 相當(dāng)于SSH 框架中的struts。 mybatis 是對jdbc 的封裝,它讓數(shù)據(jù)庫底層操作變得透明。 MyBatis 的操作都是圍繞一個sqlSessionFactory 實例展開的。 MyBatis 通過配置文件關(guān)聯(lián)到各實體類的Mapper 文件,Mapper 文件中配置了每個類對數(shù)據(jù)庫所需進行的sql 語句映射。 在每次與數(shù)據(jù)庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執(zhí)行sql 命令。
在具體的實現(xiàn)過程中,頁面發(fā)送請求給控制器,控制器調(diào)用業(yè)務(wù)層處理邏輯,邏輯層向持久層發(fā)送請求,持久層與數(shù)據(jù)庫交互,后將結(jié)果返回給業(yè)務(wù)層,業(yè)務(wù)層將處理邏輯發(fā)送給控制器,控制器再調(diào)用視圖展現(xiàn)數(shù)據(jù)(見圖2)。
圖2 操作流程
在前臺網(wǎng)頁制作過程中,采用HTML5,CSS 和JS相結(jié)合的方式,制作了一個簡單的查詢頁面,網(wǎng)頁包含的信息有圖書館常用LOGO、讀者查詢窗口。 讀者可通過題名、條碼、索書號等多種形式查找單冊圖書。根據(jù)讀者的檢索需求,系統(tǒng)通過查詢數(shù)據(jù)庫,可以調(diào)取相應(yīng)圖書的信息,并顯示具體的架位信息(見圖3),讀者根據(jù)系統(tǒng)提供的架位信息獲取指定圖書的地理位置。
圖3 圖書架位查詢結(jié)果
基于數(shù)據(jù)分析的圖書定位排架系統(tǒng),對讀者和圖書館員來說,具有現(xiàn)實意義。 圖書館員增強了圖書管控能力,按照圖書的主題和厚度進行合理布局,減少倒架工作的發(fā)生。 此外,能宏觀地了解各類別圖書的數(shù)量發(fā)展情況,以及空間需求情況,在大規(guī)模的圖書搬遷過程中,系統(tǒng)可以為圖書館上架提供一定的依據(jù);對于讀者來說,可以準確獲取圖書的所在地,快速、準確地找到目標圖書。