基于Web技术的图书精准定位系统的设计与实现
2021-05-19武永建李月清段兆英
武永建 李月清 段兆英
(北京工业职业技术学院 图书馆,北京 100042)
0 引言
目前高校图书馆大都实现了自助借还等功能,提高了工作效率,读者的满意度也得到了提高。但由于现有图书检索系统只能显示图书所在的书库和索书号,并不能精确提供图书在书库的具体位置信息,而书库面积一般都非常大,读者对分类法、索书号等并不了解,仍然面临着找书困难、找书时间长、找书不方便等问题。笔者利用Web前端技术、微服务架构技术,开发图书精准定位系统,该系统可以实现图书的精准定位。通过该系统查找图书,可以对图书精准定位到所在书库书架的行和列,方便读者快速找到图书,因此该系统的开发具有很强的理论和实践意义。
1 系统总体架构
图书精准定位系统由定位数据采集子系统和图书定位查询Web平台构成。
数据采集子系统分为在线采集和离线采集。在线采集依赖于良好的无线网络环境,直接把采集到的数据写入定位数据库,这种方式简单直接,无需额外操作。离线采集则可以脱离网络环境工作,对于特殊区域,如密集书库等无线信号屏蔽严重的地方,可以先把采集数据保存到采集终端的本地数据库,数据采集完成后再统一上传到定位数据库[1]。
图书定位查询Web平台实现了书目查询和图书定位功能。书目查询提供了筛选、排序、自动提示功能,用户可以方便快速地查询所需的书目信息[2]。书目查询结果列表提供了书目名称、作者、出版信息、在馆情况和详细分布情况,点击某一本书,会转到图书定位示意图,示意图模拟了图书馆书库书架的布局,可以直观地查看该书在图书馆的具体位置。平台采用MVVM架构,底层数据源采用oracle数据库,通过koa2搭建数据访问接口服务,使用vuejs,vuetify UI框架实现查询和定位界面。充分利用Html5和CSS3的最新技术实现响应式显示。读者用手机、PC、平板访问都可以获得良好的页面展示效果。图书精准定位系统总体架构图如图1所示。
图1 图书精准定位系统总体架构图
2 精准定位系统的设计
笔者以北京工业职业技术学院图书馆书库为例(以下简称北工职院图书馆),进行图书精准定位系统的设计。图书的精确定位需要把图书馆的馆藏空间进行精确细分成最小单元,并对这些最小单元进行定位编码。
2.1 图书定位编码设计
按照层级递进关系,对北工职院图书馆的图书摆放单元细分为:图书馆楼层书库→书架→书架列→摆放图书的书架层。北工职院图书馆2~4层为开放书架借阅区,书架分布情况如图2所示。
图2 北工职院图书馆书架布局示意图
北工职院图书馆书架布局主要信息如下:(1)图书上架根据《中图分类法》按S或蛇形走位进行摆放;(2)每个书架是1个整体,分成两大列,共54个书架;(3)每个书架有6个存储列(个别例外),书架双面可以放书,按照S形走位,每个书架有12个书架列;(4)每个书架列有6层,每层可放置1排图书,称之为书架层,每个书架层贴有层架标信息;(5)书架层为最小藏书单元。
根据上述信息,最小单元书架层的编码规则如下:【楼层】【区号】【书架】【书架列】【书架层】对应的编码采用十位编码,如图3所示。
图3 架层编码
左右两大列书架的列编号规则按U形进行,前27架从上到下、从左到右定义列顺序,后27架则从下到上、从左到右定义列顺序。第1至第27架,面向书架从左到右开始编号,S形走位后,第6列的反向是第7列,以此类推;第28至第54架,由于要衔接27架,28架从下端开始为正面,从左到右编号,反面从右到左编号。
2.2 图书定位数据采集方案设计
定位数据采集是将图书条形码和层架编码进行绑定,然后存入定位信息数据库,采集数据的准确性和完整性是精确定位的前提[3]。该系统采用首尾书定位法,首尾书定位法需要上架图书严格按照图书分类法的顺序依次上架。采集数据时,首先输入架层编码,系统从架层编码解析出书库编号。然后扫描当前层第一本书和最后一本书的条码信息,系统从OPAC数据库查询到2本书的索书号,然后以这2个索书号为区间,并联第一步解析出的书库编号作为查询条件,获取批量图书条码。系统把这些批量条码关联到架层编码,写入定位数据库,到此完成1个书架层的图书采集。采集流程如图4所示。
图4 图书定位数据采集流程图
首尾书定位法需要前期做好以下准备工作:
(1)新购图书上架、移库时,必须在OPAC数据库做好书库的调拨分配。处于同一分类的图书有可能分配在不同书库,例如北工职院图书馆的同一分类下图书有可能分配在密集书库、开架借阅书库、新书阅览书区、专题书库等。
(2)为了做到数据采集更加精确有效,在数据采集前,需要预先整理书架,把错架图书、读者归还图书上架。
(3)数据采集时的核验。按索书号区间查询图书时,需要先按书库排序再按索书号排序,读取OPAC数据库批量图书后,显示在采集界面上,为了让采集工作人员核验高效,界面还要额外显示数量、借出标记等信息。
2.3 OPAC数据库书目表索书号字段预处理
索书号是图书馆馆藏图书上架排架所使用的顺序编号,是现阶段文献外借和工作人员馆藏清点的主要依据。索书号一般由两部分组成,第一部分是分类号,依据《中国图书馆图书分类法》取号,图书出版时印在版权页;第二部分是书次号,是同一分类号下的图书编目次序号,一般由1~3位阿拉伯数字组成,方便图书馆藏集中和图书上架。
在首尾书定位法中,需要从OPAC数据库按上架顺序取出部分书目信息[4]。因索书号的字段类型是字符串类型,数据库查询是按位的大小排序,这会造成读取结果与架上图书顺序不一致。预处理手段是把索书号转换为虚拟字段,与索书号一一对应,再按虚拟字段排序,得出正确的排列结果。索书号的转换方式有索书号拆分法和定长填充法。笔者以定长填充法为例,说明索书号的转换过程。其转换过程如表1所示。
表1 索书号转换过程
2.4 图书定位数据库表设计
北工职院图书馆图书管理系统和自助借还系统都采用了oracle数据库,为了保证数据库的一致性和数据完整性,减少异构数据库数据处理的复杂性,图书定位数据表在自助借还系统数据库中创建,并借助标签转换表m_transform_tag提供的BOOK_ID、BOOK_INDEX、BOOK_NAME、BOOK_ISBN、BOOK_HOUSE等字段完成定位编码与图书的关联,图书定位数据表如表2所示。
表2 图书定位数据库表
3 定位查询子系统设计
定位查询子系统是一个Web平台,后台采用koa2搭建数据接口服务,前端页面利用vuetifyUI框架实现了多种终端的自适应,在PC端或平板手机端有良好的显示。
3.1 查询页面设计
定位查询子系统前端视图主要包含2个页面,一是查询书目信息的页面,页面头部是查询条件的设置和输入,其下是工具条,提供排序和筛选功能,剩余部分是书目信息展示列表;二是图书定位示意图显示页面,经由第一个页面书目列表的选择,把所选图书的位置标识在示意图上,示意图下方列出了图书的复本信息及在馆状态。
定位查询子系统前端工程项目由Vue-cli脚手架创建,自定义了书目查询组件BookList.vue和定位显示BookPosition.vue组件。
BookList.vue提供了用户查询界面,实现查询、筛选、升降序等功能。
用户在此界面上的查询、筛选、排序、滑动或滚动操作此参数形式向数据接口服务器发送查询指令,进行数据请求。请求使用包装过的axios.js异步请求库,查询的结果以JSON数据的形式返回,利用vuejs的非侵入性的响应式特性,返回的数据会立即检查需要更新的DOM节点,并把变化了的结果呈现到页面上。
3.2 定位页面设计
图书定位示意图使用css3节点渲染技术,而不是图片在页面的展示,其目的是为了减少向服务器请求的次数,并且H5页面元素结点的渲染响应速度比图书下载更加迅速。在界面显示之前,已把书库书架的排列抽象成1组数据,并把数据映射成DOM节点,从而完成从物理结构的书库到Web页面的示意图,在显示定位1本书时,利用MVVM架构思想,只更新示意图中的图书定位DOM节点。
根据书架的布局和摆放结构,结合前面的定位编码设计,用程序生成的抽象数据是1个一维数组,数组内容如下所示。
[
{ 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架' },
......
]
把生成的一维数组交由BookPosition.vue组件去渲染显示,利用CSS3的flex布局,把每个结节长度设置为6.66%,然后循环生成结点,即可完成映射物理结构的书库示意图,生成节点代码如下。
:style="{'height':$vuetyfy.breakpoint.xs?'8px':'12px'}">
{{item.value}}
BookPosition.vue组件自定义了【定位编码】属性,由BooksList.vue组件传入。一旦得到位置编码,BookPosition.vue采用计算属性来解析此编码,从而映射并替换前面生成的抽象书架数组中的元素,页面监听到数据变化,就会更新视图,向读者呈现图书在书库的精准位置。
4 精准定位系统的实现
4.1 采集子系统的实现
采集子系统采用首尾书定位法采集图书定位数据,为图书定位系统提供了必要的基础数据,这种方式投入成本小、精确度高,在现有条件和技术下能够顺利完成数据采集工作。采集子系统功能模块包含4个部分,分别为:系统登录模块、数据采集模块、数据上传模块、数据统计模块[5]。
(1)系统登录模块。界面提供了账号密码登录输入框,工作人员以工号为账号,以OPAC系统的密码登录系统。每项数据采集操作都会登记在账号下面,以供将来的问题追溯和采集统计。
(2)数据采集模块。工作人员登录系统后,界面提供了层、区、架、列、层的选择按钮,通过依次选择可以录入架层编码,也可以用扫描枪直接扫描录入层架标条码,把当前书架层的首书和尾书条码号扫描录入,界面会显示当前架层的所有图书,3个输入框的焦点会自动跳转,不用人工转移光标。通过排除操作,可以把不在架的图书归入问题图书列表中,以便工作人员提交到流通部处理。
(3)数据上传模块。通过上传功能,把离线采集数据上传到图书定位数据库中,完成数据的采集工作。上传完毕后,会弹出成功与否的提示信息,并提醒本次上传多少条数据。
(4)数据统计模块。可以查看各个工作人员采集的数量。
4.2 定位查询子系统的实现
4.2.1 查询界面的实现
查询界面提供了功能强大的检索图书功能,可以通过书名、作者、索书号、ISBN 4个途径,联合用户输入的关键字得出检索结果。为了使读者更加直观地了解图书信息,查询结果会显示出图书列表,包括:书目名称、出版日期、出版社、价格、借出/在馆数量情况。
为了使读者使用最少的操作达到最想要的结果,定位查询界面实现以下2个关键环节:
(1)输入关键字时,程序会监听输入框的变化,并把输入框的输入实时传给后台查询候选数据,并将候选结果以弹出列表的形式供用户选择,这样不仅可以减少用户的打字时间,还可以提供相关关键字的其他结果来参考。
(2)用无限下拉结果展示替代分页,可以减少用户其他操作,只需向下拉动或滚动鼠标轮即可展示下一页的结果。
4.2.2 定位界面的实现
在查询结果列表中,点击“查看定位”会转到图书定位示意图页面,此页面展示了图书馆2层书库的书架布局示意图,定位图书所在的架位用醒目的红色突出显示,用“↑↑”表示图书所在的书架面,示意图中空白区域表示物理书库中的立柱。示意图的下方列出图书复本的状态信息,如图5所示。
图5 定位系统图书位置示意图
图书所在书架的层数在书名下方以文字形式说明,这是因为示意图只能展示书库的平面结构,书架层的表示需要立体结构才能展示出来。实践证明:架列面3个维度的标识已经达到初步定位,再配以文字层数提示,可以达到精准定位的目的。
5 结论
笔者研究的图书馆图书借阅实现查询和定位的方案,针对在现有条件下,降低成本实现定位数据采集,具有实施的普遍性和推广性。利用对Web页面具有丰富渲染和视觉表现的最新的html和css3技术,系统的定位显示具有响应式自适应特性,实现了多终端的图书查询和定位功能,不仅提高了读者的找书效率,也给工作人员顺架、还书上架工作带来了方便,为图书馆在移动服务领域提供了思路。