張曉峰
中國電信MSS集中運(yùn)營江蘇支撐中心
隨著企業(yè)信息量日漸增長,傳統(tǒng)的關(guān)系數(shù)據(jù)庫查詢將不能滿足更高的信息檢索需求。數(shù)據(jù)主要使用關(guān)系數(shù)據(jù)庫作為存儲介質(zhì),在模糊查詢時(shí),無法使用數(shù)據(jù)庫索引,對數(shù)據(jù)庫的性能影響非常大,多次出現(xiàn)的數(shù)據(jù)庫CPU異常暴增現(xiàn)象,基本都與大表數(shù)據(jù)的模糊查詢有關(guān)。因此,必須建立起新的檢索方式代替?zhèn)鹘y(tǒng)關(guān)系數(shù)據(jù)庫查詢。
搜索系統(tǒng)應(yīng)支持用戶快速檢索信息,減少后續(xù)開發(fā)、運(yùn)維成本。搜索系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)的主要技術(shù)點(diǎn)包括:將傳統(tǒng)的數(shù)據(jù)庫查詢轉(zhuǎn)化為分詞查詢;將檢索信息開發(fā)配置化。為了實(shí)現(xiàn)上述方案,本文提出了一種 “基于ElasticSearch的智能搜索系統(tǒng)”。
本系統(tǒng)本著實(shí)用、先進(jìn)、可擴(kuò)展、經(jīng)濟(jì)性原則進(jìn)行建設(shè)。(1)實(shí)用性,指能最大限度地滿足實(shí)際工作要求;(2)先進(jìn)性,指采用當(dāng)今國內(nèi)外先進(jìn)操作架構(gòu),使新建立的系統(tǒng)能夠最大限度地適應(yīng)今后業(yè)務(wù)發(fā)展變化的需要;(3)可擴(kuò)性展,指很方便地?cái)U(kuò)展檢索范圍,支持越來越多的信息檢索;(4)經(jīng)濟(jì)性,指節(jié)約成本,提升效率。
1.2.1 物料/供應(yīng)商搜索場景
(1)將供應(yīng)商、物料數(shù)據(jù)定時(shí)增量采集到索引庫。支持供應(yīng)商、物料快速、精確搜索。用戶在統(tǒng)一搜索欄中輸入查詢關(guān)鍵字,就能查詢到經(jīng)過分詞、全文檢索的結(jié)果,與傳統(tǒng)的模糊查詢方式進(jìn)行比較,用戶體驗(yàn)明顯提升,業(yè)務(wù)數(shù)據(jù)庫壓力也得到緩解。物料、供應(yīng)商搜索數(shù)據(jù)采集流程如圖1所示。
圖1 物料、供應(yīng)商搜索數(shù)據(jù)采集流程
(2)定時(shí)器輪詢供應(yīng)商、物料數(shù)據(jù)庫。當(dāng)發(fā)現(xiàn)數(shù)據(jù)有變更(根據(jù)時(shí)間戳判斷)時(shí),將數(shù)據(jù)抽取到搜索系統(tǒng),經(jīng)過數(shù)據(jù)轉(zhuǎn)換后更新到索引庫中。物料、供應(yīng)商搜索流程如圖2所示。
(3)用戶輸入關(guān)鍵字搜索供應(yīng)商、物料數(shù)據(jù),將調(diào)用搜索系統(tǒng)的供應(yīng)商、物料搜索能力,搜索索引庫數(shù)據(jù),并將搜索結(jié)果展現(xiàn)。
1.2.2 合同搜索場景
(1)將合同數(shù)據(jù)定時(shí)增量采集到索引庫,支持合同基本信息(合同編號、合同名稱、合同對方名稱、合同類型、簽約類型、合同正文等)智能化、精確化的全文搜索。用戶在統(tǒng)一搜索欄中輸入關(guān)鍵字,就能查詢到經(jīng)過分詞+全文檢索的結(jié)果,提升用戶體驗(yàn)。(2)定時(shí)器輪詢合同數(shù)據(jù)庫,當(dāng)發(fā)現(xiàn)數(shù)據(jù)有變更(根據(jù)時(shí)間戳判斷)時(shí),將數(shù)據(jù)抽取到平臺,經(jīng)過數(shù)據(jù)轉(zhuǎn)換后更新到索引庫中。(3)用戶輸入關(guān)鍵字搜索合同數(shù)據(jù),將調(diào)用基礎(chǔ)搜索平臺的搜索能力,搜索索引庫數(shù)據(jù),并展現(xiàn)搜索結(jié)果。
(1)開發(fā)配置化:在系統(tǒng)中通過對數(shù)據(jù)源、轉(zhuǎn)換規(guī)則、數(shù)據(jù)采集策略進(jìn)行簡單的配置,即可實(shí)現(xiàn)對應(yīng)業(yè)務(wù)信息的全文搜索。(2)服務(wù)標(biāo)準(zhǔn)化:利用該系統(tǒng)對所采集的數(shù)據(jù)進(jìn)行分析、分詞智能加工轉(zhuǎn)換,以標(biāo)準(zhǔn)Restful服務(wù)接口對外提供服務(wù)調(diào)用。(3)調(diào)用簡單化:對要使用搜索服務(wù)的系統(tǒng),只需要嵌入調(diào)用接口,即可將查詢結(jié)果以JSON方式高亮返回,簡化系統(tǒng)調(diào)用。
為提高M(jìn)SS檢索關(guān)鍵業(yè)務(wù)信息的速度和效率,搜索系統(tǒng)實(shí)現(xiàn)了以下核心內(nèi)容:基礎(chǔ)配置、系統(tǒng)管理、數(shù)據(jù)采集、搜索能力開放。系統(tǒng)集成架構(gòu)如圖3所示。
圖3 系統(tǒng)集成架構(gòu)
(1)基礎(chǔ)配置:第一,數(shù)據(jù)源配置,為數(shù)據(jù)采集配置數(shù)據(jù)來源庫,在轉(zhuǎn)換規(guī)則中選擇數(shù)據(jù)源;第二,轉(zhuǎn)換規(guī)則配置,配置數(shù)據(jù)抽取規(guī)則及ES索引庫信息;第三,索引庫配置,ES索引庫打開、關(guān)閉、刪除,對索引庫的訪問權(quán)限做配置,只有擁有特定角色權(quán)限,才能查詢索引庫;第四,定時(shí)任務(wù)管理,配置數(shù)據(jù)抽取來源、轉(zhuǎn)換規(guī)則、執(zhí)行頻率;第五,搜索能力開放,配置外部系統(tǒng)調(diào)用時(shí)的開關(guān)。(2)系統(tǒng)管理:提供用戶及角色管理。(3)數(shù)據(jù)采集:根據(jù)轉(zhuǎn)換規(guī)則將數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫抽取到索引庫。系統(tǒng)主要模塊之間的協(xié)同如圖4所示。
系統(tǒng)采用的關(guān)鍵技術(shù)包括:(1)使用Spring-cloud分布式架構(gòu),原子化業(yè)務(wù)分割,減少單點(diǎn)故障。(2)使用JDBC技術(shù),根據(jù)配置的數(shù)據(jù)庫類型、IP、端口、SID、用戶名、密碼信息,完成搜索平臺數(shù)據(jù)抽取源頭配置,目前支持Oracle、MySQL等主流關(guān)系數(shù)據(jù)庫的抽取。(3)使用ElasticSearch,存儲從數(shù)據(jù)源頭抽取到的數(shù)據(jù)信息。(4)使用Kettle抽取源端數(shù)據(jù)庫數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)多平臺抽取。(5)使用PDFBox讀取PDF文件里的信息,轉(zhuǎn)換、寫入到索引庫,實(shí)現(xiàn)非結(jié)構(gòu)化信息檢索。(6)使用Quartz技術(shù),完成數(shù)據(jù)增量抽取定時(shí)器配置,實(shí)現(xiàn)平臺配合化開發(fā)。
圖4 系統(tǒng)主要模塊協(xié)同
本文設(shè)計(jì)的智慧搜索系統(tǒng),實(shí)現(xiàn)了數(shù)據(jù)庫查詢向全文搜索的轉(zhuǎn)變,大幅度提高信息檢索效率,也實(shí)現(xiàn)了信息檢索工作的“三化”:(1)開發(fā)配置化,將需要增加的業(yè)務(wù)搜索范圍進(jìn)行簡單的配置、開發(fā),即可實(shí)現(xiàn)對新業(yè)務(wù)信息的全文搜索,實(shí)現(xiàn)開發(fā)配置化;(2)服務(wù)標(biāo)準(zhǔn)化,對采集過來的數(shù)據(jù)進(jìn)行分析、轉(zhuǎn)換,以標(biāo)準(zhǔn)Restful接口對外提供檢索能力,實(shí)現(xiàn)服務(wù)標(biāo)準(zhǔn)化;(3)調(diào)用簡單化,對需要使用搜索能力的系統(tǒng),只需簡單嵌入調(diào)用接口,即可將查詢結(jié)果以JSON方式帶高亮返回,實(shí)現(xiàn)調(diào)用簡單化。