论文部分内容阅读
摘 要:图书馆信息资源丰富,如何方便、快速、准确的检索到所需的资源,一直是图书馆存在的难题。随着大数据技术的蓬勃发展,越来越多的大数据技术应用于图书馆管理服务中。本文就图书馆信息检索系统,提出以一种基于全文搜索引擎ElasticSearch(简称ES)技术进行重构的方案,以实现方便、快速、准确的在海量数据中检索信息的目标。
关键词:图书馆;检索;ElasticSearch;分布式
一.图书馆检索服务系统的现状及解决方式
1、现状
据了解,当前部分图书馆检索服务系统还是用的C/S(客户端/服务器)架构的系统。系统管理员需要在对外服务的电脑上安装相应的客户端软件,读者通过该客户端软件进行图书检索。这种检索系统主要采用的技术模式一般是以数据库为基础,利用数据库查询语句在数据表中进行查询得到结果。这种方式有两个弊端:一个是对关键字查询不准,只能提供模糊查询,这就造成图书馆明明有相关书籍,但是很难检索到;二是随着数据量的不断增加,数据库查询的效率会大幅度下降,体现出来就是耗时较长,甚至触发超时无结果返回[1]。
2、解决方式
就目前图书馆检索系统的现状,本文提出基于全文搜索引擎ES技术对图书馆检索服务系统进行重构的方案。
二.检索服务系统技术概述
全文搜索引擎ES技术是利用ETL工具将原有业务系统中的数据抽取、转换、加载到ES中。在此基础上使用ES技术构建图书馆全文搜索引擎,其具有开源、实时检索海量数据的特性并能通过引入成熟的中文分词算法IK提高搜索准确性[2]。
1、ES概述
ES是一个基于Apache Lucene的开源搜索引擎。ES是使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能的搜索引擎,它的目的是通过简单的RESTFul API来隐藏Lucene的复杂性,从而让全文搜索变得简单。其优点还表现为:支持分布式系统、实时搜索引擎、高可用性、可横向扩展。
2、倒排索引
ES将每个索引划分成多个分片,每个分片又分散到集群的不同服务器上。默认的,一个索引会创建5个主分片1个副本,共十个分片。
实际上,一个分片是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结果使得ES在不扫描全部文档的情况下,就能检索到哪些文档包含特定的关键字。一个索引由文档中的所有不重复的词条组成,对于每个词条都有一个包含它的文档列表。倒排列表记录了词条对应的文档集合,有倒排索引项组成。倒排索引项包括如下信息:
文档ID:用于获取原始信息
词条频率TF(Term Frequency):记录该词条在文档中出现的次数,用于后续相关性算法
位置(Position):记录词条在文档中分词位置,用于做短语搜索
偏移(Offset):记录词条在文档的开始和结束位置,用于做高亮显示。
通过建立倒排索引,根据关键字很快能够定位到包含关键字的所有文档,而不用扫描全部文档。
3、IK分词
中文分词是对中文文档建立倒排索引的基础,不同于英文,中文句子中没有词的界限,因此在进行词条抽取的过程中需要进行分词。IK Analyzer是一个开源的基于Java语言开发的轻量级中文分词工具包。最初它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。
4、ETL
ETL是英文Extract-Transform-Load的缩写,用来描述将数据从源端经过抽取、转换、加载至目的端的过程。图书馆检索服务系统改造需要将原业务系统存储在关系型数据库中的数据通过ETL工具转移到ES中并生成索引库[3]。
三、检索服务系统实现
1、搭建ES集群
根据系统架构设计,首先搭建ES集群。本系统首先使用3台服务器搭建系统,服务器配置为CPU(16核)、内存(256G)、硬盘(1T),服务器操作系统为Cent OS6.8。
搭建过程:
a)准备工作:配置各节点IP、节点名、hosts、关闭防火墙。
b)每个节点安装jdk1.8.0,并配置好环境变量;
c)新增用户es,因为启动ES不能用root,每个节点安装ES7.1.1,并修改配置文件elasticsearch.yml
d)启动集群
2、 数据迁移
数据迁移使用开源ETL工具Kettle。这里Kettle部署到window系统的电脑上。
部署过程:
a)下载Kettle安装包
b)安装jdk,并配置环境变量
c)将安装包解压到任意目录,双击Spoon.bat启动配置转换过程,启动任务将关系型数据库数据迁移到ES中。
3、Web检索模块
Web检索模块即在ES集群上,用户通过输入关键字,或者选择搜索范围,模块通过解析将结果返回显示。Web检索模块采用BS架构,用户只要通过浏览器即可访问系统界面。用户通过“一框”式搜索框输入关键字,并点击搜索,模块会在所有倒排索引表中查找符合條件的表,在根据对应的词条id提取出对应的文档数据,并对文档中关键字进行高亮显示。
四、结束语
本文首先分析了当前图书馆信息检索系统的现状及问题,在深入研究了ES倒排索引的性能的基础上提出了基于ES全文索引技术的图书馆检索系统的研究。通过ES集群的搭建,使用kettle工具将业务系统数据导入ES集群建立索引库,并构建web检索模块,实现图书馆检索服务系统。系统具有准确性高、检索速度快、可靠性强的特点。不足之处是本系统目前还是测试研究阶段,未能在实际生产环境中应用,部分功能还需要进一步完善。
参考文献:
[1] 王志雄.浅谈图书馆信息检索服务的现状及优化策略[J].赤子,2019(05)
[2] 张建中,黄艳飞,熊拥军.基于ElasticSearch的数字图书馆检索系统[J].计算机与现代化,2015(6)
[3] 王伟,魏乐,刘文清,舒红平.基于Elasticsearch 的分布式全文搜索系统[J].电子科技2018(31)
关键词:图书馆;检索;ElasticSearch;分布式
一.图书馆检索服务系统的现状及解决方式
1、现状
据了解,当前部分图书馆检索服务系统还是用的C/S(客户端/服务器)架构的系统。系统管理员需要在对外服务的电脑上安装相应的客户端软件,读者通过该客户端软件进行图书检索。这种检索系统主要采用的技术模式一般是以数据库为基础,利用数据库查询语句在数据表中进行查询得到结果。这种方式有两个弊端:一个是对关键字查询不准,只能提供模糊查询,这就造成图书馆明明有相关书籍,但是很难检索到;二是随着数据量的不断增加,数据库查询的效率会大幅度下降,体现出来就是耗时较长,甚至触发超时无结果返回[1]。
2、解决方式
就目前图书馆检索系统的现状,本文提出基于全文搜索引擎ES技术对图书馆检索服务系统进行重构的方案。
二.检索服务系统技术概述
全文搜索引擎ES技术是利用ETL工具将原有业务系统中的数据抽取、转换、加载到ES中。在此基础上使用ES技术构建图书馆全文搜索引擎,其具有开源、实时检索海量数据的特性并能通过引入成熟的中文分词算法IK提高搜索准确性[2]。
1、ES概述
ES是一个基于Apache Lucene的开源搜索引擎。ES是使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能的搜索引擎,它的目的是通过简单的RESTFul API来隐藏Lucene的复杂性,从而让全文搜索变得简单。其优点还表现为:支持分布式系统、实时搜索引擎、高可用性、可横向扩展。
2、倒排索引
ES将每个索引划分成多个分片,每个分片又分散到集群的不同服务器上。默认的,一个索引会创建5个主分片1个副本,共十个分片。
实际上,一个分片是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结果使得ES在不扫描全部文档的情况下,就能检索到哪些文档包含特定的关键字。一个索引由文档中的所有不重复的词条组成,对于每个词条都有一个包含它的文档列表。倒排列表记录了词条对应的文档集合,有倒排索引项组成。倒排索引项包括如下信息:
文档ID:用于获取原始信息
词条频率TF(Term Frequency):记录该词条在文档中出现的次数,用于后续相关性算法
位置(Position):记录词条在文档中分词位置,用于做短语搜索
偏移(Offset):记录词条在文档的开始和结束位置,用于做高亮显示。
通过建立倒排索引,根据关键字很快能够定位到包含关键字的所有文档,而不用扫描全部文档。
3、IK分词
中文分词是对中文文档建立倒排索引的基础,不同于英文,中文句子中没有词的界限,因此在进行词条抽取的过程中需要进行分词。IK Analyzer是一个开源的基于Java语言开发的轻量级中文分词工具包。最初它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。
4、ETL
ETL是英文Extract-Transform-Load的缩写,用来描述将数据从源端经过抽取、转换、加载至目的端的过程。图书馆检索服务系统改造需要将原业务系统存储在关系型数据库中的数据通过ETL工具转移到ES中并生成索引库[3]。
三、检索服务系统实现
1、搭建ES集群
根据系统架构设计,首先搭建ES集群。本系统首先使用3台服务器搭建系统,服务器配置为CPU(16核)、内存(256G)、硬盘(1T),服务器操作系统为Cent OS6.8。
搭建过程:
a)准备工作:配置各节点IP、节点名、hosts、关闭防火墙。
b)每个节点安装jdk1.8.0,并配置好环境变量;
c)新增用户es,因为启动ES不能用root,每个节点安装ES7.1.1,并修改配置文件elasticsearch.yml
d)启动集群
2、 数据迁移
数据迁移使用开源ETL工具Kettle。这里Kettle部署到window系统的电脑上。
部署过程:
a)下载Kettle安装包
b)安装jdk,并配置环境变量
c)将安装包解压到任意目录,双击Spoon.bat启动配置转换过程,启动任务将关系型数据库数据迁移到ES中。
3、Web检索模块
Web检索模块即在ES集群上,用户通过输入关键字,或者选择搜索范围,模块通过解析将结果返回显示。Web检索模块采用BS架构,用户只要通过浏览器即可访问系统界面。用户通过“一框”式搜索框输入关键字,并点击搜索,模块会在所有倒排索引表中查找符合條件的表,在根据对应的词条id提取出对应的文档数据,并对文档中关键字进行高亮显示。
四、结束语
本文首先分析了当前图书馆信息检索系统的现状及问题,在深入研究了ES倒排索引的性能的基础上提出了基于ES全文索引技术的图书馆检索系统的研究。通过ES集群的搭建,使用kettle工具将业务系统数据导入ES集群建立索引库,并构建web检索模块,实现图书馆检索服务系统。系统具有准确性高、检索速度快、可靠性强的特点。不足之处是本系统目前还是测试研究阶段,未能在实际生产环境中应用,部分功能还需要进一步完善。
参考文献:
[1] 王志雄.浅谈图书馆信息检索服务的现状及优化策略[J].赤子,2019(05)
[2] 张建中,黄艳飞,熊拥军.基于ElasticSearch的数字图书馆检索系统[J].计算机与现代化,2015(6)
[3] 王伟,魏乐,刘文清,舒红平.基于Elasticsearch 的分布式全文搜索系统[J].电子科技2018(31)