姚富士
(國海證券股份有限公司 廣西壯族自治區南寧市 530028)
對于上了一定規模的企業,通常會面臨以下困境:員工離職會帶走知識經驗,新員工無法承接前員工的經驗需從零開始;員工積累過的經驗沒有妥善保存或在時間流失中遺忘,日常工作中積累的大量重要文檔文件,也因為沒有很好的搜索引擎,導致很多文檔形同虛設,無法發揮出應有的價值。
傳統文檔管理系統中當文檔數量變多,分類層級加深后,信息的利用率變得極低,熱點信息占比較少,很多信息沉沒在文檔的海洋中,不再產生價值。本系統通過先進的全文檢索技術解決了以上弊端,激活所有的文檔,使其成為熱點信息,持續提供價值。
知識庫系統致力于使用信息技術工具積累員工的專業知識及工作經驗,通過知識庫建設,可以把員工的知識及經驗都固化下來,并在企業內實現共享,在不斷的使用中得以增值、補充。這能大大提高員工的工作效率及業務服務能力,讓企業在這些積累基礎上越站越高,實現高速發展,不斷邁向新的臺階。
Elasticsearch(以下簡稱ES)是一個開源的分布式數據存儲和全文檢索引擎,目前廣泛應用于企業的各業務系統中。ES 存儲的內容為文檔(Document),它不需要如同關系數據庫那樣預先定義表結構,不要求每個文檔具備相同的字段,這在使用上帶來了極大的便利。ES 是分布式系統,可集群化部署,可以適應應用的存儲規模發展不斷擴容,不影響原有系統的運行,實現擴容的透明性。
ES 與傳統關系型數據庫不一樣的是,它采用了倒排的索引結構,這種索引結構非常適合于全文檢索,具有極高的檢索性能。因此,ES 廣泛應用于各類搜索類業務系統,如電商、企業搜索引擎等。
Openoffice 是開源的跨平臺辦公套件,提供跟微軟Office 相兼容的文件格式及功能。除了提供便捷的界面供辦公文件編輯處理外,它還可以以headless 命令行的方式運行,通過命令,可以對Office文件(PPT、Word、Excel)進行格式轉換,如轉換成PDF、txt 等。本文中的知識庫系統使用Openoffice 實現文件的PDF 轉換用于文件預覽,txt 轉換用于內容提取供全文搜索使用。
知識庫的建設內容分3 大板塊:問答知識、公共知識、小組知識。其中,問答知識定位企業各類業務的常見問題解答,以簡潔的問答為主;公共知識定位為企業內部公開的知識分享,可見范圍為企業全體員工;小組知識定位為“一定范圍內”的局部知識共享與協作,滿足一定的私密性特征,只有小組成員才可編輯查看。
系統需提供知識(包括文章及Office 等文檔)的統一管理與共享??蓪χR進行分類、添加標簽,便于管理與查找。知識可以帶附件,能支持大量附件的存儲。
提供全文檢索功能,不但能檢索文章內容,還能檢索Office 等文件內容。在海量數據中提供高效、準確的匹配。打破傳統的信息層級壁壘,直接通過關鍵詞檢索所有層級信息,提供扁平化的信息查找方式,以最快的速度提供最相關的知識。
提供用戶及權限管理,針對企業特性,提供細粒度權限控制管理,實現在企業的“一定范圍內”共享的特性,滿足企業內部各部門信息的隔離性要求。
提供API 接口,供企業中其他系統使用,不斷擴大知識的應用范圍,放大知識的價值。一方面提供數據源接入的API,其他系統可將其產生的知識推送到知識庫系統,提高系統的扇入,豐富其內容;另一方面提供知識檢索的API,提高系統的扇出。
圖1 為系統的整體架構圖,整個系統由4 個獨立大模塊組成:知識管理系統、文件轉換服務、索引服務、API 接口服務。這4 大模塊都可以獨立、多實例部署,不存在單點故障問題。
將系統切分為多個模塊,每個模塊實現特定的任務,分離了關注點,這樣設計帶來了諸多好處:
(1)切分后各個模塊可以由不同的人開發,提高開發的并行度、縮短開發周期;
(2)不同的模塊可以獨立進行技術選型,根據模塊的需求使用最合適的技術,提高靈活性;
(3)各個模塊可以獨立部署、擴縮容,當某個模塊處理能力達到瓶頸時,只需要對該模塊進行擴容即可;
(4)當調整單個模塊的算法及實現時,不會影響其他模塊,不需要對其他模塊進行整體回歸測試,提高系統健壯性。
知識管理系統面向終端用戶,基于B/S 架構實現,前后端分離,后端提供api 供前端調用。該模塊實現了知識的錄入、編輯、搜索、查看等功能。企業員工只需要與該模塊交互即可。
用戶信息、分類信息、知識信息等結構化信息存儲在Mysql 數據庫中,知識附件存儲在OSS 對象存儲中,借助對象存儲系統實現海量附件的存儲及備份,實現高可靠性。文章及附件的全文索引信息存儲在ES 中,提供高并發、海量文檔的近實時檢索。Redis 用于存儲登錄用戶的會話信息,通過Redis 共享會話,知識管理系統可以多實例部署,避免單點故障問題,實現了系統的高可用性。

圖1
文件轉換服務的職責是對文件進行轉換,一方面需要將Office文件轉換成PDF,供用戶預覽使用;另一方面需要提取Office 和PDF 等文件的文本內容,供索引服務創建索引,以便實現全文檢索功能。
文件轉換服務使用的工具是Openoffice,通過其命令行工具,可以將Office 文件轉換成PDF。針對文本提取,本系統使用了Apache 的pdfbox 組件,該組件支持從PDF 中提取出文本內容,提取效果較佳。
該服務會持續掃描數據庫,查看文件表,發現有Office 和PDF類型的文件即進行處理。
用戶在知識管理系統中錄入的知識內容存儲在數據庫中,文件轉換服務提取的Office 等文件的文本也會存儲到數據庫中,索引服務持續掃描數據庫,對還未創建索引的知識進行格式化,然后存入ES 中進行索引。
索引服務的職責是維護數據庫中知識內容與ES 中知識索引的一致性,對新建的知識創建索引,更新后的知識更新索引,刪除的知識刪除索引。通過將該模塊分離出來成獨立服務,降低了知識管理系統的復雜性,同時也方便將來對索引內容進行功能擴展,如對知識內容添加更多輔助檢索的信息,以提高檢索準確性等。
知識庫作為企業應用體系的一部分,需要與其他系統互聯互通才能發揮更大的價值。API 接口服務提供了其他系統與知識庫交互的通道,提供檢索、知識維護等功能。該模塊為無狀態服務,可根據實際情況部署多個實例,視企業實際并發情況而定。
本文分析了當前企業面臨的知識管理相關問題,提出了以全文檢索為核心的知識管理系統,支持文章、Office、PDF 文件等內容的關鍵詞全文檢索。使用Openoffice 對Office 文件進行格式轉換,采用開源Elasticsearch 索引引擎對知識建立索引。針對企業應用特性分析了知識管理系統的需求,設計并實現了一個知識管理系統。