?

基于Lucene的生產管理系統一站式檢索中心的研究與設計

2016-02-13 07:50魏俊鋒
現代計算機 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接口,使各個業務模塊能夠快速簡易的接入到檢索中心,形成“一站式”的檢索模式,極大方便了用戶多維度多層級速查相關聯數據的需求,符合系統未來的發展需求;第三,通過檢索組件把各個不同模塊的業務數據集中在檢索中心查詢,無需用戶在不同頁面間跳轉,也不需要來回選擇復雜的查詢條件,可便捷、直觀地對相關數據進行查找、定位、分析,極大提升用戶體驗?!耙徽臼健蹦J讲坏蓪⑾到y當前模塊有機地結合到一起,也可以隨時對后續新增加的系統模塊進行可插拔式的配置管理。

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 結語

數據快速查詢一直是大數據企業對其企業軟件最渴求的功能之一,它是考量用戶體驗的最直接的標準?;贚ucene的生產管理系統一站式檢索中心,既可以有效應對系統數據快速增長和用戶查詢體驗差的矛盾,又可以靈活應對系統功能不斷增長變化而導致的動態構建和維護索引困難的矛盾,還可以將系統不同模塊的數據有機而直觀地“聯合展現”,讓數據展示更清晰。檢索中心不對原有系統進行侵入,這不僅可應用與生產管理系統,還可以推廣到其他的子系統。當然,檢索中心也存在一些不足之處,例如目前數據來源只支持視圖獲取,也只能通過手動方式進行索引更新,數據的即時性不如直接查詢數據庫,這也是下一步研究的重點。

[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

猜你喜歡
全文檢索視圖檢索
5.3 視圖與投影
視圖
Y—20重型運輸機多視圖
SA2型76毫米車載高炮多視圖
Oracle數據庫全文檢索性能研究
專利檢索中“語義”的表現
全文檢索引擎Lucene系統模型與應用研究
全文檢索引擎技術在電子病歷中的應用
國際標準檢索
國際標準檢索
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合