当前位置:首页 期刊杂志

Elasticsearch和Openoffice的企业知识库系统设计

时间:2024-05-04

姚富士

(国海证券股份有限公司 广西壮族自治区南宁市 530028)

1 引言

对于上了一定规模的企业,通常会面临以下困境:员工离职会带走知识经验,新员工无法承接前员工的经验需从零开始;员工积累过的经验没有妥善保存或在时间流失中遗忘,日常工作中积累的大量重要文档文件,也因为没有很好的搜索引擎,导致很多文档形同虚设,无法发挥出应有的价值。

传统文档管理系统中当文档数量变多,分类层级加深后,信息的利用率变得极低,热点信息占比较少,很多信息沉没在文档的海洋中,不再产生价值。本系统通过先进的全文检索技术解决了以上弊端,激活所有的文档,使其成为热点信息,持续提供价值。

知识库系统致力于使用信息技术工具积累员工的专业知识及工作经验,通过知识库建设,可以把员工的知识及经验都固化下来,并在企业内实现共享,在不断的使用中得以增值、补充。这能大大提高员工的工作效率及业务服务能力,让企业在这些积累基础上越站越高,实现高速发展,不断迈向新的台阶。

2 相关技术介绍

2.1 Elasticsearch

Elasticsearch(以下简称ES)是一个开源的分布式数据存储和全文检索引擎,目前广泛应用于企业的各业务系统中。ES 存储的内容为文档(Document),它不需要如同关系数据库那样预先定义表结构,不要求每个文档具备相同的字段,这在使用上带来了极大的便利。ES 是分布式系统,可集群化部署,可以适应应用的存储规模发展不断扩容,不影响原有系统的运行,实现扩容的透明性。

ES 与传统关系型数据库不一样的是,它采用了倒排的索引结构,这种索引结构非常适合于全文检索,具有极高的检索性能。因此,ES 广泛应用于各类搜索类业务系统,如电商、企业搜索引擎等。

2.2 Openoffice

Openoffice 是开源的跨平台办公套件,提供跟微软Office 相兼容的文件格式及功能。除了提供便捷的界面供办公文件编辑处理外,它还可以以headless 命令行的方式运行,通过命令,可以对Office文件(PPT、Word、Excel)进行格式转换,如转换成PDF、txt 等。本文中的知识库系统使用Openoffice 实现文件的PDF 转换用于文件预览,txt 转换用于内容提取供全文搜索使用。

3 系统需求分析

知识库的建设内容分3 大板块:问答知识、公共知识、小组知识。其中,问答知识定位企业各类业务的常见问题解答,以简洁的问答为主;公共知识定位为企业内部公开的知识分享,可见范围为企业全体员工;小组知识定位为“一定范围内”的局部知识共享与协作,满足一定的私密性特征,只有小组成员才可编辑查看。

系统需提供知识(包括文章及Office 等文档)的统一管理与共享。可对知识进行分类、添加标签,便于管理与查找。知识可以带附件,能支持大量附件的存储。

提供全文检索功能,不但能检索文章内容,还能检索Office 等文件内容。在海量数据中提供高效、准确的匹配。打破传统的信息层级壁垒,直接通过关键词检索所有层级信息,提供扁平化的信息查找方式,以最快的速度提供最相关的知识。

提供用户及权限管理,针对企业特性,提供细粒度权限控制管理,实现在企业的“一定范围内”共享的特性,满足企业内部各部门信息的隔离性要求。

提供API 接口,供企业中其他系统使用,不断扩大知识的应用范围,放大知识的价值。一方面提供数据源接入的API,其他系统可将其产生的知识推送到知识库系统,提高系统的扇入,丰富其内容;另一方面提供知识检索的API,提高系统的扇出。

4 系统设计及实现

图1 为系统的整体架构图,整个系统由4 个独立大模块组成:知识管理系统、文件转换服务、索引服务、API 接口服务。这4 大模块都可以独立、多实例部署,不存在单点故障问题。

将系统切分为多个模块,每个模块实现特定的任务,分离了关注点,这样设计带来了诸多好处:

(1)切分后各个模块可以由不同的人开发,提高开发的并行度、缩短开发周期;

(2)不同的模块可以独立进行技术选型,根据模块的需求使用最合适的技术,提高灵活性;

(3)各个模块可以独立部署、扩缩容,当某个模块处理能力达到瓶颈时,只需要对该模块进行扩容即可;

(4)当调整单个模块的算法及实现时,不会影响其他模块,不需要对其他模块进行整体回归测试,提高系统健壮性。

4.1 知识管理系统

知识管理系统面向终端用户,基于B/S 架构实现,前后端分离,后端提供api 供前端调用。该模块实现了知识的录入、编辑、搜索、查看等功能。企业员工只需要与该模块交互即可。

用户信息、分类信息、知识信息等结构化信息存储在Mysql 数据库中,知识附件存储在OSS 对象存储中,借助对象存储系统实现海量附件的存储及备份,实现高可靠性。文章及附件的全文索引信息存储在ES 中,提供高并发、海量文档的近实时检索。Redis 用于存储登录用户的会话信息,通过Redis 共享会话,知识管理系统可以多实例部署,避免单点故障问题,实现了系统的高可用性。

图1

4.2 文件转换服务

文件转换服务的职责是对文件进行转换,一方面需要将Office文件转换成PDF,供用户预览使用;另一方面需要提取Office 和PDF 等文件的文本内容,供索引服务创建索引,以便实现全文检索功能。

文件转换服务使用的工具是Openoffice,通过其命令行工具,可以将Office 文件转换成PDF。针对文本提取,本系统使用了Apache 的pdfbox 组件,该组件支持从PDF 中提取出文本内容,提取效果较佳。

该服务会持续扫描数据库,查看文件表,发现有Office 和PDF类型的文件即进行处理。

4.3 索引服务

用户在知识管理系统中录入的知识内容存储在数据库中,文件转换服务提取的Office 等文件的文本也会存储到数据库中,索引服务持续扫描数据库,对还未创建索引的知识进行格式化,然后存入ES 中进行索引。

索引服务的职责是维护数据库中知识内容与ES 中知识索引的一致性,对新建的知识创建索引,更新后的知识更新索引,删除的知识删除索引。通过将该模块分离出来成独立服务,降低了知识管理系统的复杂性,同时也方便将来对索引内容进行功能扩展,如对知识内容添加更多辅助检索的信息,以提高检索准确性等。

4.4 API接口服务

知识库作为企业应用体系的一部分,需要与其他系统互联互通才能发挥更大的价值。API 接口服务提供了其他系统与知识库交互的通道,提供检索、知识维护等功能。该模块为无状态服务,可根据实际情况部署多个实例,视企业实际并发情况而定。

5 结论

本文分析了当前企业面临的知识管理相关问题,提出了以全文检索为核心的知识管理系统,支持文章、Office、PDF 文件等内容的关键词全文检索。使用Openoffice 对Office 文件进行格式转换,采用开源Elasticsearch 索引引擎对知识建立索引。针对企业应用特性分析了知识管理系统的需求,设计并实现了一个知识管理系统。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!