APP下载

基于Lucene的生产管理系统一站式检索中心的研究与设计

2016-02-13魏俊锋

现代计算机 2016年36期
关键词:全文检索视图检索

魏俊锋

(广东电网有限责任公司中山供电局,中山 528400)

基于Lucene的生产管理系统一站式检索中心的研究与设计

魏俊锋

(广东电网有限责任公司中山供电局,中山 528400)

随着生产管理系统的发展和深入应用,系统的基础数据和业务数据随之迅猛增长,如何快速地检索到用户想要的数据,以及便捷地关联检索到相关的信息,提高用户体验,成为系统发展的当务之急。Lucene[1]是全文索引和搜寻的开源程式库,提供一个简单却强大的应用程序接口,能够做全文索引和搜寻。结合电力生产管理的业务特性,将Lucene技术应用于生产管理系统,搭建一站式的检索中心,为生产管理系统用户提供关联多项业务如台账管理、试验管理、巡检修管理等的多视角多层级的快速检索。

检索中心;一站式;生产管理系统;Lucene

0 引言

随着南方电网公司在2014年完成一体化生产管理系统的开发建设,2015年全面部署上线运行[2],标志着广东电网各直属供电局分开部署、独立运行时代的结束,使得各局在业务流程、数据规范、操作标准上得以统一。电力企业业务数据主要来自生产数据和运营数据,随着应用的广泛和深入,系统的基础数据和业务数据增长迅猛[3]。以广东电网为例,截止到2016年8月,设备主数据数量将近3900万,功能位置主数据数量更是超过1.1亿。而一些关键应用模块(如运行日志)每月增长的数据量达到10万以上,系统部署上线以来的短短一年多,这些模块的数据量已达到百万级别。

一方面是系统数据量的急剧增长,另一方面是系统用户对于快速定位到自己想要的所有有关数据有着强烈的渴求。例如,能否提供诸如关键字查找、模糊查找等与互联网搜索类似的快速检索方法,定位到具体设备?又能否方便地进一步关联到设备的巡检记录、消缺计划、缺陷处理情况、操作票和工作票的开票情况?要满足这些查询要求,传统的做法是,先到系统中计划模块查询此设备的巡检计划,然后到查询此计划关联的缺陷,再到操作票、工作票模块查询相关的记录。这种做法能够满足要求,但却有很多不足之处:一是需要来回切换菜单,用户点击量次数多,用户体验较差;二是每个模块条件都不一样,需要重复选择或输入;三是在海量数据下,查询的性能无法保证。

经过用户需求和检索技术的分析,研究和建设基于检索软件Lucene的生产管理系统一站式检索中心,能够比较全面的解决以上问题:首先,Lucene成熟的开源检索组件,为系统快速检索性能提供了保证;其次,以Lucene检索API为基础,以一体化生产系统的业务模块的数据速查为诉求,搭建一套开放给业务应用使用的、可以迅速构建索引并依据索引进行检索的API接口,使各个业务模块能够快速简易的接入到检索中心,形成“一站式”的检索模式,极大方便了用户多维度多层级速查相关联数据的需求,符合系统未来的发展需求;第三,通过检索组件把各个不同模块的业务数据集中在检索中心查询,无需用户在不同页面间跳转,也不需要来回选择复杂的查询条件,可便捷、直观地对相关数据进行查找、定位、分析,极大提升用户体验。“一站式”模式不但可将系统当前模块有机地结合到一起,也可以随时对后续新增加的系统模块进行可插拔式的配置管理。

1 系统架构与功能

1.1 系统业务定位

一站式检索中心的业务定位,一是能方便的将业务数据接入到检索中心,实现可插拔式的一站式管理。二是能够方便的检索数据。系统业务定位如图1所示。

图1 检索中心业务定位

1.2 系统功能设计

根据系统业务定位,生产管理系统一站式检索中心主要的业务需求是:能快速地将想要的业务模块数据构建索引并使用检索服务,能够将不同模块的业务数据集中在检索中心,通过“一站式”检索显示。系统通过数据采集管理、自定义配置管理、检索中心这三部分来组织功能。系统功能架构如图2。

图2 检索中心功能架构

(1)数据采集管理

数据采集管理提供全方位的数据服务支撑功能,数据来源管理对数据来源进行适配和管理,需要进行索引存储的数据可来源于视图、表、ETL、网络、文件服务器等。数据转换功能将来源数据转换为标准的可索引的数据。索引服务提供索引构建和数据检索服务。整个数据采集管理基于Lucene API,为自定义配置管理和检索中心提供后台支撑,是一站式检索中心系统的核心。

(2)自定义配置管理

业务应用(数据)首先要接入到一站式检索中心系统进行索引构建,才可以对其进行检索。配置管理提供接入所需要的操作入口。通常,一个配置需要的条件包括模块、数据来源(目前支持视图)和存储路径。除基本的增删改查功能外,还包括对索引字段的管理,如选择哪些字段进行索引,是否需要分词等。

通过自定义配置,可以很便捷、高效地将不同模块的业务数据接入到检索中心,进行一站式的检索。

(3)检索中心

检索中心主要供检索功能。用户输入关键字,系统将关键字进行分词、检索,把命中的数据记录进行展示,并高亮显示关键字。

所有集成的业务数据均可以在此显示,既支持对全部已构建数据进行检索,又支持对单类业务数据进行索引。

1.3 系统架构设计

根据系统功能设计,生产管理系统一站式检索中心分为两大块:全文检索应用端和全文检索服务端。应用端和服务端通过JMS消息组件进行消息传递。检索中心系统架构如图3所示。

图3 检索中心系统架构

(1)应用端

由全文检索配置管理和检索中心两个应用组成。对某类业务数据构建全文索引的功能,首先需要通过全文检索配置管理应用将需要进行全文检索的数据通过数据库视图进行数据采集,针对采集的数据进行创建索引,建立分词、分类,自动生成索引文件提供给检索中心。这部分的功能对用户来讲是可视的。

(2)全文检索服务器

全文检索服务器包括检索API、检索客户端、检索引擎以及Lucene核心组件,主要处理应用端发送的接入和检索请求。检索API规范了需要接入检索中心即检索的所有标准。检索客户端是对检索API调用的一些简单实现,提供给应用端使用。检索引擎封装了Lucene核心功能:构建索引和数据检索。通常一个检索过程是这样的:应用端按照检索API规范(可直接使用检索客户端实现)发起调用请求,全文检索服务器接收到请求后,通过检索引擎处理请求并反馈处理结果。

1.4 系统技术架构

基于Lucene的API,构建支持索引(Index)、检索(Search)、接入配置(Config)的一站式检索服务器,充分利用Java多线程、Spring MVC[4]、Volecity、Require JS、JMS等前后端技术,为安全生产子系统提供强大便捷的检索支撑。系统的总体技术架构如图表4。

图4 总体技术架构

2 关键技术研究

2.1 Lucene检索技术

Lucene是一个高性能、可伸缩的信息搜索(IR)库[5]。它可以融入到我们自己的应用程序中,作为一种索引支撑技术,为应用程序添加索引和搜索能力。Lucene是用Java实现的、成熟的开源项目,也是Apache软件基金(Apache Software Foundation)中的一个项目,并且基于Apache软件许可协议授权。

Lucene提供了一套简单而强大的核心API,我们不需要全面掌握和理解全文索引和搜索机制,只需要掌握几个核心类便可以轻松使用了。Lucene是一个Java类库,对于不同的索引和搜索内容是通用的,所以它也可以很容易的集成到我们的应用程序中。Lucene最核心的功能便是索引构建和数据检索,它们是通过IndexWriter和IndexSearcher实现的。Lucene的索引构建与检索过程如图5所示。

图5 Lucene索引构建与检索

2.2 索引构建与数据检索实现

(1)索引构建

Lucene构建索引的条件是,要有一个目录(Directory),一个带有分词器(Analyzer)的索引构建配置对象(IndexWriterConfig),一个带有字段(Field)的文档对象(Document),最后使用索引创建器IndexWriter进行索引构建。通常,使用Lucene构建索引的简要步骤如图6所示。

从索引构建步骤可以看出,创建索引的关键是把需要检索的数据构造成Lucene相关对象。对于使用者来讲,最关键的是构造Document和Field对象,其中Field对象关联的最终需要进行索引的数据,也即业务数据。为了构建可插拔的业务数据对象,且不限制业务数据特定的结构(字段数量),我们将业务数据设计成一个视图(View)。每一个特定的应用模块数据都用一个视图表示,视图里的字段就是最终要构建成Lucene索引文档(Field字段)的数据。在需要对某个业务模块构建索引时,只要告诉服务器,是要针对哪个视图进行构建,服务器便可以自行获取相应的数据。这样做的好好处是,不需要修改原有应用的任何代码,不需要改变原有数据结构,数据字段选择非常灵活,甚至可以在任何时候修改视图以更新需要进行索引的数据。

图6 索引构建步骤

我们知道,需要进行索引的数据一般都非常庞大,那么如何确保构建索引的效率呢?如果完全不加控制,一次性加载所有数据,对于内存、I/O的消耗都是非常大的,很可能造成构建过程中断。为了解决这个问题,系统采用了多线程和阻塞队列[6]的读取方式。使用2个线程,读线程不断的从视图中取数据(每次500)并放入队列,取线程监听队列并将队列中的数据构建索引。构建索引的整个过程如图表7所示。

图7 索引构建示意图

(2)数据检索

数据检索是与索引构建相反的过程。类似的,数据检索需要知道存储的目录(Directory),一个带有构建时所使用的分词器(Analyzer)的查询解析器(QueryParser),最后使用索引检索器(IndexSearcher)和目录读取器(IndexReader),从文档中读出命中的文档指针集(TopDocs)。使用Lucene检索数据的简要步骤如图8所示。

图8 数据检索示意图

用户检索时,可以选择单个模块进行检索,也可以对全部数据进行检索。如果是检索全部数据,检索中心除了需要知道检索的总记录数外,还需要展示每个模块的记录数。为了提升检索性能,达到快速识别各模块记录数的目的,系统使用多线程并发搜索的方式进行识别。使用Java7的Fork/Join框架,将一个检索任务切分成多个子任务执行,最后合并检索结果。例如,需要从10个模块中检索出含有关键字“10kV”的记录,那么系统将分成10个子任务并发检索。任务分解合并的模式如图9所示。

图9 检索任务分解示意图

3 在电力企业中应用或效益分析

电力行业是一个用户量非常庞大的传统行业,生产业务每时每刻都产生着成千上万的数据,是不折不扣的大数据行业。传统的检索数据的方法是使用SQL语句直接对数据库中的结构化数据进行查询,在数据量达到一定级别时,不得不对数据库结构或业务代码进行重构,这时一项费时、费力、费钱的工作。

基于Lucene的生产管理系统一站式检索中心,有效地解决了上述问题。第一,Lucene核心API解决了检索效率的问题,数据量越大,Lucene的优势越明显。第二,检索中心对原有系统是零侵入性的,这就避免了为了使用全文索引而进行的代码改造。第三,可插拔式的“一站式”管理方式非常灵活,可以非常方便和高效地将已有模块和后续新增模块接入到检索中心。第四,由于采用的是视图方式抽取数据进行的索引构建,依据运行过程中查询的体验,可随时对视图字段进行修正,系统的可维护性非常高。

综上所述,基于Lucene的生产管理系统一站式检索中心具有高效、多维度、多层级、可插拔、可维护等众多优点,可以为处于大数据行业的公司节约时间和人力成本,用于数据量巨大的电力企业是非常切合的。

4 结语

数据快速查询一直是大数据企业对其企业软件最渴求的功能之一,它是考量用户体验的最直接的标准。基于Lucene的生产管理系统一站式检索中心,既可以有效应对系统数据快速增长和用户查询体验差的矛盾,又可以灵活应对系统功能不断增长变化而导致的动态构建和维护索引困难的矛盾,还可以将系统不同模块的数据有机而直观地“联合展现”,让数据展示更清晰。检索中心不对原有系统进行侵入,这不仅可应用与生产管理系统,还可以推广到其他的子系统。当然,检索中心也存在一些不足之处,例如目前数据来源只支持视图获取,也只能通过手动方式进行索引更新,数据的即时性不如直接查询数据库,这也是下一步研究的重点。

[1]Apache Software Foundation.http://lucene.apache.org/core/6_2_0/demo/overview-summary.html#IndexFiles,http://lucene.apache.org/ core/6_2_0/demo/overview-summary.html#Searching_Files.

[2]广东电网有限责任公司.资产管理系统安全生产管理子系统运行报告[R],2015.

[3]广东电网有限责任公司.广东电网“十三五”技术创新行动计划_信息与数据技术创新分册[R],2016.

[4]陈雄华,林开雄.Spring 3.x企业应用开发实战[M].电子工业出版社,2012.

[5]Michael McCandless,Erik Hatcher,Otis Gospodnetic,Lucene实战(第2版)[M].牛长流,肖宇(译).人民邮电出版社,2011.

[6]方腾飞,魏鹏,程晓明.Java并发编程的艺术[M].机械工业出版社,2015.

Research and Design of One-stop Retrieval Center for Production Management System Based on Lucene

WEI Jun-feng
(Zhongshan Power Supply Bureau of Guangdong Power Grid Co.,Ltd.,Zhongshan 528400)

With the development and the wide application of the production management system,the data of the system is increasing rapidly,how to quickly retrieve the data that users want,and to improve the user’s satisfaction,has become the urgent task of the system development. Lucene is a set of open source library for full text index and search,which provides a simple but powerful application program interface, which can be used for full-text indexing and searching.Combined with the operational characteristics of power production management, applies Lucene to the production management system,and sets up a one-stop search center,which provides an multi-angle,multi-level and effective way for the rapid retrieval service function of the production management system.

Retrieval Center;One-Stop;Production Management System;Lucene

1007-1423(2016)36-0071-06

10.3969/j.issn.1007-1423.2016.36.018

魏俊锋(1970-),男,高级工程师,从事领域为电力信息系统的建设和项目管理工作

2016-10-25

2016-12-15

猜你喜欢

全文检索视图检索
2019年第4-6期便捷检索目录
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
Oracle数据库全文检索性能研究
专利检索中“语义”的表现
基于KySou的全文检索系统的分析与优化
特色数据库全文检索系统的设计
国际标准检索