武永建 李月清 段兆英
(北京工業(yè)職業(yè)技術(shù)學(xué)院 圖書館,北京 100042)
目前高校圖書館大都實(shí)現(xiàn)了自助借還等功能,提高了工作效率,讀者的滿意度也得到了提高。但由于現(xiàn)有圖書檢索系統(tǒng)只能顯示圖書所在的書庫和索書號,并不能精確提供圖書在書庫的具體位置信息,而書庫面積一般都非常大,讀者對分類法、索書號等并不了解,仍然面臨著找書困難、找書時(shí)間長、找書不方便等問題。筆者利用Web前端技術(shù)、微服務(wù)架構(gòu)技術(shù),開發(fā)圖書精準(zhǔn)定位系統(tǒng),該系統(tǒng)可以實(shí)現(xiàn)圖書的精準(zhǔn)定位。通過該系統(tǒng)查找圖書,可以對圖書精準(zhǔn)定位到所在書庫書架的行和列,方便讀者快速找到圖書,因此該系統(tǒng)的開發(fā)具有很強(qiáng)的理論和實(shí)踐意義。
圖書精準(zhǔn)定位系統(tǒng)由定位數(shù)據(jù)采集子系統(tǒng)和圖書定位查詢Web平臺構(gòu)成。
數(shù)據(jù)采集子系統(tǒng)分為在線采集和離線采集。在線采集依賴于良好的無線網(wǎng)絡(luò)環(huán)境,直接把采集到的數(shù)據(jù)寫入定位數(shù)據(jù)庫,這種方式簡單直接,無需額外操作。離線采集則可以脫離網(wǎng)絡(luò)環(huán)境工作,對于特殊區(qū)域,如密集書庫等無線信號屏蔽嚴(yán)重的地方,可以先把采集數(shù)據(jù)保存到采集終端的本地?cái)?shù)據(jù)庫,數(shù)據(jù)采集完成后再統(tǒng)一上傳到定位數(shù)據(jù)庫[1]。
圖書定位查詢Web平臺實(shí)現(xiàn)了書目查詢和圖書定位功能。書目查詢提供了篩選、排序、自動(dòng)提示功能,用戶可以方便快速地查詢所需的書目信息[2]。書目查詢結(jié)果列表提供了書目名稱、作者、出版信息、在館情況和詳細(xì)分布情況,點(diǎn)擊某一本書,會(huì)轉(zhuǎn)到圖書定位示意圖,示意圖模擬了圖書館書庫書架的布局,可以直觀地查看該書在圖書館的具體位置。平臺采用MVVM架構(gòu),底層數(shù)據(jù)源采用oracle數(shù)據(jù)庫,通過koa2搭建數(shù)據(jù)訪問接口服務(wù),使用vuejs,vuetify UI框架實(shí)現(xiàn)查詢和定位界面。充分利用Html5和CSS3的最新技術(shù)實(shí)現(xiàn)響應(yīng)式顯示。讀者用手機(jī)、PC、平板訪問都可以獲得良好的頁面展示效果。圖書精準(zhǔn)定位系統(tǒng)總體架構(gòu)圖如圖1所示。
圖1 圖書精準(zhǔn)定位系統(tǒng)總體架構(gòu)圖
筆者以北京工業(yè)職業(yè)技術(shù)學(xué)院圖書館書庫為例(以下簡稱北工職院圖書館),進(jìn)行圖書精準(zhǔn)定位系統(tǒng)的設(shè)計(jì)。圖書的精確定位需要把圖書館的館藏空間進(jìn)行精確細(xì)分成最小單元,并對這些最小單元進(jìn)行定位編碼。
按照層級遞進(jìn)關(guān)系,對北工職院圖書館的圖書擺放單元細(xì)分為:圖書館樓層書庫→書架→書架列→擺放圖書的書架層。北工職院圖書館2~4層為開放書架借閱區(qū),書架分布情況如圖2所示。
圖2 北工職院圖書館書架布局示意圖
北工職院圖書館書架布局主要信息如下:(1)圖書上架根據(jù)《中圖分類法》按S或蛇形走位進(jìn)行擺放;(2)每個(gè)書架是1個(gè)整體,分成兩大列,共54個(gè)書架;(3)每個(gè)書架有6個(gè)存儲(chǔ)列(個(gè)別例外),書架雙面可以放書,按照S形走位,每個(gè)書架有12個(gè)書架列;(4)每個(gè)書架列有6層,每層可放置1排圖書,稱之為書架層,每個(gè)書架層貼有層架標(biāo)信息;(5)書架層為最小藏書單元。
根據(jù)上述信息,最小單元書架層的編碼規(guī)則如下:【樓層】【區(qū)號】【書架】【書架列】【書架層】對應(yīng)的編碼采用十位編碼,如圖3所示。
圖3 架層編碼
左右兩大列書架的列編號規(guī)則按U形進(jìn)行,前27架從上到下、從左到右定義列順序,后27架則從下到上、從左到右定義列順序。第1至第27架,面向書架從左到右開始編號,S形走位后,第6列的反向是第7列,以此類推;第28至第54架,由于要銜接27架,28架從下端開始為正面,從左到右編號,反面從右到左編號。
定位數(shù)據(jù)采集是將圖書條形碼和層架編碼進(jìn)行綁定,然后存入定位信息數(shù)據(jù)庫,采集數(shù)據(jù)的準(zhǔn)確性和完整性是精確定位的前提[3]。該系統(tǒng)采用首尾書定位法,首尾書定位法需要上架圖書嚴(yán)格按照圖書分類法的順序依次上架。采集數(shù)據(jù)時(shí),首先輸入架層編碼,系統(tǒng)從架層編碼解析出書庫編號。然后掃描當(dāng)前層第一本書和最后一本書的條碼信息,系統(tǒng)從OPAC數(shù)據(jù)庫查詢到2本書的索書號,然后以這2個(gè)索書號為區(qū)間,并聯(lián)第一步解析出的書庫編號作為查詢條件,獲取批量圖書條碼。系統(tǒng)把這些批量條碼關(guān)聯(lián)到架層編碼,寫入定位數(shù)據(jù)庫,到此完成1個(gè)書架層的圖書采集。采集流程如圖4所示。
圖4 圖書定位數(shù)據(jù)采集流程圖
首尾書定位法需要前期做好以下準(zhǔn)備工作:
(1)新購圖書上架、移庫時(shí),必須在OPAC數(shù)據(jù)庫做好書庫的調(diào)撥分配。處于同一分類的圖書有可能分配在不同書庫,例如北工職院圖書館的同一分類下圖書有可能分配在密集書庫、開架借閱書庫、新書閱覽書區(qū)、專題書庫等。
(2)為了做到數(shù)據(jù)采集更加精確有效,在數(shù)據(jù)采集前,需要預(yù)先整理書架,把錯(cuò)架圖書、讀者歸還圖書上架。
(3)數(shù)據(jù)采集時(shí)的核驗(yàn)。按索書號區(qū)間查詢圖書時(shí),需要先按書庫排序再按索書號排序,讀取OPAC數(shù)據(jù)庫批量圖書后,顯示在采集界面上,為了讓采集工作人員核驗(yàn)高效,界面還要額外顯示數(shù)量、借出標(biāo)記等信息。
索書號是圖書館館藏圖書上架排架所使用的順序編號,是現(xiàn)階段文獻(xiàn)外借和工作人員館藏清點(diǎn)的主要依據(jù)。索書號一般由兩部分組成,第一部分是分類號,依據(jù)《中國圖書館圖書分類法》取號,圖書出版時(shí)印在版權(quán)頁;第二部分是書次號,是同一分類號下的圖書編目次序號,一般由1~3位阿拉伯?dāng)?shù)字組成,方便圖書館藏集中和圖書上架。
在首尾書定位法中,需要從OPAC數(shù)據(jù)庫按上架順序取出部分書目信息[4]。因索書號的字段類型是字符串類型,數(shù)據(jù)庫查詢是按位的大小排序,這會(huì)造成讀取結(jié)果與架上圖書順序不一致。預(yù)處理手段是把索書號轉(zhuǎn)換為虛擬字段,與索書號一一對應(yīng),再按虛擬字段排序,得出正確的排列結(jié)果。索書號的轉(zhuǎn)換方式有索書號拆分法和定長填充法。筆者以定長填充法為例,說明索書號的轉(zhuǎn)換過程。其轉(zhuǎn)換過程如表1所示。
表1 索書號轉(zhuǎn)換過程
北工職院圖書館圖書管理系統(tǒng)和自助借還系統(tǒng)都采用了oracle數(shù)據(jù)庫,為了保證數(shù)據(jù)庫的一致性和數(shù)據(jù)完整性,減少異構(gòu)數(shù)據(jù)庫數(shù)據(jù)處理的復(fù)雜性,圖書定位數(shù)據(jù)表在自助借還系統(tǒng)數(shù)據(jù)庫中創(chuàng)建,并借助標(biāo)簽轉(zhuǎn)換表m_transform_tag提供的BOOK_ID、BOOK_INDEX、BOOK_NAME、BOOK_ISBN、BOOK_HOUSE等字段完成定位編碼與圖書的關(guān)聯(lián),圖書定位數(shù)據(jù)表如表2所示。
表2 圖書定位數(shù)據(jù)庫表
定位查詢子系統(tǒng)是一個(gè)Web平臺,后臺采用koa2搭建數(shù)據(jù)接口服務(wù),前端頁面利用vuetifyUI框架實(shí)現(xiàn)了多種終端的自適應(yīng),在PC端或平板手機(jī)端有良好的顯示。
定位查詢子系統(tǒng)前端視圖主要包含2個(gè)頁面,一是查詢書目信息的頁面,頁面頭部是查詢條件的設(shè)置和輸入,其下是工具條,提供排序和篩選功能,剩余部分是書目信息展示列表;二是圖書定位示意圖顯示頁面,經(jīng)由第一個(gè)頁面書目列表的選擇,把所選圖書的位置標(biāo)識在示意圖上,示意圖下方列出了圖書的復(fù)本信息及在館狀態(tài)。
定位查詢子系統(tǒng)前端工程項(xiàng)目由Vue-cli腳手架創(chuàng)建,自定義了書目查詢組件BookList.vue和定位顯示BookPosition.vue組件。
BookList.vue提供了用戶查詢界面,實(shí)現(xiàn)查詢、篩選、升降序等功能。
用戶在此界面上的查詢、篩選、排序、滑動(dòng)或滾動(dòng)操作此參數(shù)形式向數(shù)據(jù)接口服務(wù)器發(fā)送查詢指令,進(jìn)行數(shù)據(jù)請求。請求使用包裝過的axios.js異步請求庫,查詢的結(jié)果以JSON數(shù)據(jù)的形式返回,利用vuejs的非侵入性的響應(yīng)式特性,返回的數(shù)據(jù)會(huì)立即檢查需要更新的DOM節(jié)點(diǎn),并把變化了的結(jié)果呈現(xiàn)到頁面上。
圖書定位示意圖使用css3節(jié)點(diǎn)渲染技術(shù),而不是圖片在頁面的展示,其目的是為了減少向服務(wù)器請求的次數(shù),并且H5頁面元素結(jié)點(diǎn)的渲染響應(yīng)速度比圖書下載更加迅速。在界面顯示之前,已把書庫書架的排列抽象成1組數(shù)據(jù),并把數(shù)據(jù)映射成DOM節(jié)點(diǎn),從而完成從物理結(jié)構(gòu)的書庫到Web頁面的示意圖,在顯示定位1本書時(shí),利用MVVM架構(gòu)思想,只更新示意圖中的圖書定位DOM節(jié)點(diǎn)。
根據(jù)書架的布局和擺放結(jié)構(gòu),結(jié)合前面的定位編碼設(shè)計(jì),用程序生成的抽象數(shù)據(jù)是1個(gè)一維數(shù)組,數(shù)組內(nèi)容如下所示。
[
{ name: 'colnone', value: '54架' },
{ name: 'sh54_1', value:" },{ name: 'sh54_2', value:" }, { name: 'sh54_3', value:"},
{ name: 'sh54_4', value:" },{ name: 'sh54_5', value:" }, { name: 'sh54_6', value:"},
{ name: 'colnone', value: '東' },
{ name: 'sh1_6', value:"}, { name: 'sh1_5', value:"}, { name: 'sh1_4', value:"},
{ name: 'sh1_3', value:"}, { name: 'sh1_2', value:"}, { name: 'sh1_1', value:"},
{ name: 'colnone', value: '1架' },
{ name: 'colnone', value: '53架' },
{ name: 'sh53_1', value:"},...... { name: 'sh53_6', value:"},
{ name: 'colnone', value:"},
{ name: 'sh2_6', value:"},......{ name: 'sh2_1', value:"},
{ name: 'colnone', value: '2架' },
......
]
把生成的一維數(shù)組交由BookPosition.vue組件去渲染顯示,利用CSS3的flex布局,把每個(gè)結(jié)節(jié)長度設(shè)置為6.66%,然后循環(huán)生成結(jié)點(diǎn),即可完成映射物理結(jié)構(gòu)的書庫示意圖,生成節(jié)點(diǎn)代碼如下。
:style="{'height':$vuetyfy.breakpoint.xs?'8px':'12px'}">
{{item.value}}
BookPosition.vue組件自定義了【定位編碼】屬性,由BooksList.vue組件傳入。一旦得到位置編碼,BookPosition.vue采用計(jì)算屬性來解析此編碼,從而映射并替換前面生成的抽象書架數(shù)組中的元素,頁面監(jiān)聽到數(shù)據(jù)變化,就會(huì)更新視圖,向讀者呈現(xiàn)圖書在書庫的精準(zhǔn)位置。
采集子系統(tǒng)采用首尾書定位法采集圖書定位數(shù)據(jù),為圖書定位系統(tǒng)提供了必要的基礎(chǔ)數(shù)據(jù),這種方式投入成本小、精確度高,在現(xiàn)有條件和技術(shù)下能夠順利完成數(shù)據(jù)采集工作。采集子系統(tǒng)功能模塊包含4個(gè)部分,分別為:系統(tǒng)登錄模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)上傳模塊、數(shù)據(jù)統(tǒng)計(jì)模塊[5]。
(1)系統(tǒng)登錄模塊。界面提供了賬號密碼登錄輸入框,工作人員以工號為賬號,以O(shè)PAC系統(tǒng)的密碼登錄系統(tǒng)。每項(xiàng)數(shù)據(jù)采集操作都會(huì)登記在賬號下面,以供將來的問題追溯和采集統(tǒng)計(jì)。
(2)數(shù)據(jù)采集模塊。工作人員登錄系統(tǒng)后,界面提供了層、區(qū)、架、列、層的選擇按鈕,通過依次選擇可以錄入架層編碼,也可以用掃描槍直接掃描錄入層架標(biāo)條碼,把當(dāng)前書架層的首書和尾書條碼號掃描錄入,界面會(huì)顯示當(dāng)前架層的所有圖書,3個(gè)輸入框的焦點(diǎn)會(huì)自動(dòng)跳轉(zhuǎn),不用人工轉(zhuǎn)移光標(biāo)。通過排除操作,可以把不在架的圖書歸入問題圖書列表中,以便工作人員提交到流通部處理。
(3)數(shù)據(jù)上傳模塊。通過上傳功能,把離線采集數(shù)據(jù)上傳到圖書定位數(shù)據(jù)庫中,完成數(shù)據(jù)的采集工作。上傳完畢后,會(huì)彈出成功與否的提示信息,并提醒本次上傳多少條數(shù)據(jù)。
(4)數(shù)據(jù)統(tǒng)計(jì)模塊??梢圆榭锤鱾€(gè)工作人員采集的數(shù)量。
4.2.1 查詢界面的實(shí)現(xiàn)
查詢界面提供了功能強(qiáng)大的檢索圖書功能,可以通過書名、作者、索書號、ISBN 4個(gè)途徑,聯(lián)合用戶輸入的關(guān)鍵字得出檢索結(jié)果。為了使讀者更加直觀地了解圖書信息,查詢結(jié)果會(huì)顯示出圖書列表,包括:書目名稱、出版日期、出版社、價(jià)格、借出/在館數(shù)量情況。
為了使讀者使用最少的操作達(dá)到最想要的結(jié)果,定位查詢界面實(shí)現(xiàn)以下2個(gè)關(guān)鍵環(huán)節(jié):
(1)輸入關(guān)鍵字時(shí),程序會(huì)監(jiān)聽輸入框的變化,并把輸入框的輸入實(shí)時(shí)傳給后臺查詢候選數(shù)據(jù),并將候選結(jié)果以彈出列表的形式供用戶選擇,這樣不僅可以減少用戶的打字時(shí)間,還可以提供相關(guān)關(guān)鍵字的其他結(jié)果來參考。
(2)用無限下拉結(jié)果展示替代分頁,可以減少用戶其他操作,只需向下拉動(dòng)或滾動(dòng)鼠標(biāo)輪即可展示下一頁的結(jié)果。
4.2.2 定位界面的實(shí)現(xiàn)
在查詢結(jié)果列表中,點(diǎn)擊“查看定位”會(huì)轉(zhuǎn)到圖書定位示意圖頁面,此頁面展示了圖書館2層書庫的書架布局示意圖,定位圖書所在的架位用醒目的紅色突出顯示,用“↑↑”表示圖書所在的書架面,示意圖中空白區(qū)域表示物理書庫中的立柱。示意圖的下方列出圖書復(fù)本的狀態(tài)信息,如圖5所示。
圖5 定位系統(tǒng)圖書位置示意圖
圖書所在書架的層數(shù)在書名下方以文字形式說明,這是因?yàn)槭疽鈭D只能展示書庫的平面結(jié)構(gòu),書架層的表示需要立體結(jié)構(gòu)才能展示出來。實(shí)踐證明:架列面3個(gè)維度的標(biāo)識已經(jīng)達(dá)到初步定位,再配以文字層數(shù)提示,可以達(dá)到精準(zhǔn)定位的目的。
筆者研究的圖書館圖書借閱實(shí)現(xiàn)查詢和定位的方案,針對在現(xiàn)有條件下,降低成本實(shí)現(xiàn)定位數(shù)據(jù)采集,具有實(shí)施的普遍性和推廣性。利用對Web頁面具有豐富渲染和視覺表現(xiàn)的最新的html和css3技術(shù),系統(tǒng)的定位顯示具有響應(yīng)式自適應(yīng)特性,實(shí)現(xiàn)了多終端的圖書查詢和定位功能,不僅提高了讀者的找書效率,也給工作人員順架、還書上架工作帶來了方便,為圖書館在移動(dòng)服務(wù)領(lǐng)域提供了思路。