佟興帆 鄧輝宇 李志明
(中國(guó)科學(xué)院上海應(yīng)用物理研究所 上海 201800)
上海光源(Shanghai Synchrotron Radiation Facility, SSRF)的開發(fā)建設(shè)及長(zhǎng)期維護(hù)、改進(jìn),對(duì)信息化系統(tǒng)有很高要求,如數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)管理系統(tǒng)(Product Data Management,PDM[1])、項(xiàng)目管理等。其中,數(shù)據(jù)管理系統(tǒng)具有重要地位,借助PDM 項(xiàng)目的實(shí)施,能完善SSRF對(duì)海量數(shù)據(jù)的管理,將研發(fā)流程電子化,通過流程控制任務(wù)的進(jìn)行和數(shù)據(jù)發(fā)放可提高管理水平、完善信息化體系。
PDM 產(chǎn)品數(shù)據(jù)管理是計(jì)算機(jī)應(yīng)用領(lǐng)域的重要技術(shù)之一,是以軟件技術(shù)為基礎(chǔ),以產(chǎn)品為核心,對(duì)產(chǎn)品相關(guān)的數(shù)據(jù)、過程和資源一體化的集成管理技術(shù)。目前流行的 PDM 軟件有 PTC公司的Windchill, UGS公司的Teamcenter和IBM公司的PM等[2]。本文采用UGS公司的 Teamcenter平臺(tái)搭建PDM。通過SSRF-PDM系統(tǒng)的實(shí)施和應(yīng)用,達(dá)到如下總體目標(biāo):數(shù)據(jù)集中管理及有效的版本控制;實(shí)現(xiàn)分級(jí)權(quán)限控制、快速檢索功能、遠(yuǎn)程檢索和查閱工程文件;實(shí)現(xiàn)技術(shù)管理文件批轉(zhuǎn)審批功能;完成各種文檔格式轉(zhuǎn)換并能使用統(tǒng)一文檔瀏覽器;實(shí)現(xiàn)網(wǎng)上高速文件收發(fā);完成與加速器實(shí)時(shí)數(shù)據(jù)庫的連接。
現(xiàn)有的基于Teamcenter的PDM系統(tǒng)的檢索結(jié)果是無序的。而對(duì)于檢索系統(tǒng)而言,排序是一個(gè)核心問題(SSRF的海量數(shù)據(jù)查找尤為如此)。另一方面,目前的檢索結(jié)果還存在滿意度不高(尤其是對(duì)中文)、無匹配程度控制、使用率低、不能模糊匹配等問題。本文通過引進(jìn)Lucene[3]完善系統(tǒng)的檢索效果。
上海應(yīng)用物理研究所網(wǎng)絡(luò)(圖 1)的所有客戶端計(jì)算機(jī)和服務(wù)器同在一個(gè)局域網(wǎng)內(nèi),主干網(wǎng)帶寬1000M,服務(wù)器和主干網(wǎng)間的帶寬1000 M,而客戶端計(jì)算機(jī)和主干網(wǎng)間的連接的帶寬為 100M。根據(jù)SSRF目前的硬件配置情況,SSRF-PDM 系統(tǒng)服務(wù)分布在兩臺(tái)服務(wù)器上:DB服務(wù)器以及PDM服務(wù)器。通過VPN連接兩個(gè)園區(qū)。
圖1 SSRF-PDM系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 SSRF-PDM network structure.
SSRF-PDM 系統(tǒng)構(gòu)建采用美國(guó) UGS公司Teamcenter Engineering 2005 SR1(以下簡(jiǎn)稱TCEng2K5SR1),由于要和SSRF目前的Solid Edge、AutoCAD、Protel、TCEngVis(Teamcenter Engineering Visualization的簡(jiǎn)稱)進(jìn)行集成,所以選擇Rich Client模式進(jìn)行部署。在 PDM 服務(wù)器上,還要安裝和配置第三方的服務(wù),如HTTP Service、App Service等。
圖2 SSRF-PDM服務(wù)器和客戶端模塊配置Fig.2 SSRF-PDM server and client module configuration.
SSRF-PDM系統(tǒng)提供 2種模式的 Rich Client(2-Tier Rich Client和4-Tier Rich Client)和 1種模式的Thin Client(Web Client)。2-Tier Rich Client需要在每一臺(tái)客戶端機(jī)器上單獨(dú)安裝 Portal和 TC Server服務(wù)(TC_ROOT),具有完全的功能,支持Solid Edge Manager、AutoCAD Manager、TCEng Vis、MS Office以及各種應(yīng)用軟件的集成。4-Tier Rich Client以O(shè)TW(Over The Web)方式通過瀏覽器從服務(wù)器上自動(dòng)安裝,并在服務(wù)器配置發(fā)生變化的時(shí)候自動(dòng)完成系統(tǒng)更新。4-Tier OTW Rich Client方式不支持UG NX2 Manager和AutoCAD Manager,支持TCEng Vis。要求所有的OTW客戶端將TCEng Vis安裝在相同的本地目錄中,其有些PDM功能受到限制。TCEng2K5SR1的Thin Client方式不在客戶端安裝任何軟件,對(duì)客戶端要求最低,只要客戶端有 Web瀏覽器,就可以通過瀏覽器訪問SSRF-PDM系統(tǒng)。Thin Client方式可以在WAN環(huán)境使用,只要有Internet連通就可使用PDM系統(tǒng),較宜于遠(yuǎn)程使用。但是,這種方式主要用于數(shù)據(jù)瀏覽,不具有數(shù)據(jù)創(chuàng)建功能。
系統(tǒng)配置完畢運(yùn)行測(cè)試時(shí),發(fā)現(xiàn)SSRF-PDM系統(tǒng)自帶的檢索系統(tǒng)檢索效果不理想。主要有如下問題:(1) 現(xiàn)有SSRF-PDM系統(tǒng)的檢索結(jié)果無序; (2)檢索結(jié)果滿意度不理想(尤其是對(duì)中文); (3) 無匹配程度控制,輸出大量無關(guān)信息;(4) 使用率低;(5) 對(duì)于某些格式的文件不能進(jìn)行檢索(比如.dwg)。
圖3 Lucene的索引流程Fig.3 Lucene indexing process.
經(jīng)調(diào)研,我們發(fā)現(xiàn) Lucene是個(gè)很好的檢索工具,可進(jìn)行增量索引(Append),可對(duì)大量數(shù)據(jù)進(jìn)行批量索引,可實(shí)現(xiàn)排序,且接口設(shè)計(jì)可用于優(yōu)化批量索引和小批量的增量索引;能非常靈活的適應(yīng)各種應(yīng)用(只需前端有合適的轉(zhuǎn)換器把數(shù)據(jù)源轉(zhuǎn)換成相應(yīng)結(jié)構(gòu));對(duì)中文檢索的效果比較好。Lucene的索引流程如圖3所示。
SSRF-PDM自帶檢索工具所使用的算法,未建立很好的索引機(jī)制。它采用前向索引方式,即每個(gè)文檔對(duì)應(yīng)著該文檔所包含的詞或者短語的列表;Lucene采用的是反向索引(inverted index)機(jī)制,文檔中的每個(gè)詞或短語對(duì)應(yīng)著一個(gè)文檔列表,該列表中的文檔是所有包含該詞或短語的文檔。該列表還會(huì)包含一些輔助信息,比如該詞或短語在文檔中出現(xiàn)的次數(shù)以及出現(xiàn)的位置等。這些信息會(huì)被用來對(duì)搜索結(jié)果進(jìn)行排序。這種結(jié)構(gòu)對(duì)于“哪些文檔中包含單詞X”這樣的問題能快速得到搜索結(jié)果。
文本形式的文獻(xiàn)正文轉(zhuǎn)換為該文獻(xiàn)中每個(gè)漢字在正文中位置索引信息列表,也就是從文本空間到位置空間的轉(zhuǎn)換。此后每當(dāng)用戶輸入一個(gè)詞句時(shí),算法就以檢索詞句的第一個(gè)字為基礎(chǔ),采用前方一致的方式搜索該漢字的索引,若無該漢字,則立即顯示落選信息;若有該字,則根據(jù)該字的記錄字段信息取出主文檔中的響應(yīng)記錄,采用子字符串搜索函數(shù),確定記錄中是否有該詞句。重復(fù)以上過程,直至命中的單字結(jié)果信息處理完畢。良好的索引機(jī)制和檢索算法,使Lucene檢索的速度得到提高。
將文檔和用戶的查詢語句都表示成向量之后,就可利用文檔向量和查詢向量間的相似性來表示文檔和查詢間的相關(guān)性。為衡量文檔向量和查詢向量間的相似性,較常用的方法是使用余弦系數(shù)(cosine coefficient)。它可表示為:
該算法用兩個(gè)向量的夾角的余弦值來表示兩個(gè)文檔之間或者文檔與查詢向量之間的相似程度。利用該算法,向量空間模型就能夠計(jì)算出系統(tǒng)中的每個(gè)文檔向量和查詢向量的相似程度。計(jì)算結(jié)果的數(shù)值在0–1間,值越大說明相似程度越高,也說明這個(gè)文檔和查詢之間的相關(guān)性越高,這樣就可以對(duì)查詢結(jié)果進(jìn)行排序,把相關(guān)性高的搜索結(jié)果排在前面。
該算法解決了系統(tǒng)自帶的檢索工具不能進(jìn)行相關(guān)度排序的問題。因?yàn)樽詭Чぞ咧灰獧z索到與輸入關(guān)鍵字一致的結(jié)果便顯示輸出,不會(huì)進(jìn)行繼續(xù)對(duì)全文遍歷而進(jìn)行相關(guān)度計(jì)算,而對(duì)于海量的 SSRFPDM系統(tǒng),結(jié)果排序是重要問題之一。
SSRF-PDM系統(tǒng)自帶檢索工具,由于不是為中文檢索設(shè)計(jì),對(duì)中文的查找效果遠(yuǎn)低于英文,而上海光源的很大一部分資料都是中文記錄,所以需加入中文檢索功能。由于中文不同于英文,詞與詞中間沒有空格間隔,所以要分詞后才能進(jìn)行檢索查找。Lucene提供的算法如下。
假設(shè)對(duì) S=S1S2S3S4…… 進(jìn)行正向最大匹配分詞, 其分詞算法可通過如下步驟進(jìn)行:
(1)取一字 S1, 在詞表中查找 S1。并保存是否成詞標(biāo)記;
(2)再取一字 S2 , 判斷詞表中是否有以 S1 S2為前綴的詞;
(3)不存在, 則S1 為單字, 一次分詞結(jié)束;
(4)存在, 判斷S1S2是否為詞, 并取以S1S2 為首的多字詞的個(gè)數(shù)n;
(5)如n為0, 一次分詞結(jié)束;
(6)否則再取一字 Si, 判斷詞表中是否有以S1S2….Si為前綴的詞;
(7)若不存在, 則返回最近一次能夠成詞的S1S2….Si-1
(8)否則轉(zhuǎn)(6);
(9)從字Si開始下一次分。
通過加入中文詞典與中文分詞,該系統(tǒng)對(duì)中文檢索的效果大為提高。
為將 Lucene應(yīng)用于 SSRF-PDM,開發(fā)了如下文件[6]。
CreateIndex.java實(shí)現(xiàn)索引建立,為允許數(shù)據(jù)文件夾中出現(xiàn)文件夾嵌套,使用了遞歸的結(jié)構(gòu):構(gòu)造方法調(diào)用private void indexDocs(File dataDir, String indexDir)進(jìn)行索引建立,在 indexDocs方法中,將判斷當(dāng)前傳入文件參數(shù)dataDir是目錄還是文件,如果是前者,則遞歸調(diào)用indexDocs方法,否則調(diào)用indexFile方法。indexFile方法進(jìn)行文件索引,在建立索引之前,首先判斷索引文件是否存在,若索引文件不存在,則建立新的索引文件夾和索引文件,若索引文件存在,則在原索引基礎(chǔ)上進(jìn)行增量索引。
由于Lucene提供的增量索引機(jī)制的問題,在進(jìn)行增量索引時(shí),需進(jìn)行先期處理:我們?cè)诮⑺饕龝r(shí)加入了名為information的field,它由文件的絕對(duì)路徑和最后修改時(shí)間連接而成,能唯一確定一個(gè)文件,在進(jìn)行增量索引時(shí),需先判斷當(dāng)前索引是否已對(duì)當(dāng)前文件建立了索引,否,就直接建立新的索引;是,則需將已建立索引刪除后對(duì)當(dāng)前文件建立新的索引,否則會(huì)出現(xiàn)重復(fù)索引的問題。
Lucene為實(shí)現(xiàn)全文檢索,提供了一些特定的數(shù)據(jù)結(jié)構(gòu),包括document, field, term等,索引和搜索時(shí)只需新建或者操作這些數(shù)據(jù)結(jié)構(gòu)即可。
indexSearch.java實(shí)現(xiàn)搜索和搜索結(jié)果的排序。軟件要求對(duì)搜索結(jié)果進(jìn)行排序,Lucene的搜索結(jié)果默認(rèn)按照相關(guān)度降序排列,為提供相關(guān)度的升序排列,我們新建了一個(gè)SortField,分別用兩種排列方式對(duì)其進(jìn)行實(shí)例化,并用此 SortField實(shí)例化一個(gè)Sort類。
LuceneDOCDocument.java實(shí)現(xiàn)doc格式文件的轉(zhuǎn)化,靜態(tài)方法 getDocument返回一個(gè) lucene的document類型。LucenePDFDocument.java,LuceneEXCELDocument.java,LucenePPTDocument.java三類分別實(shí)現(xiàn)pdf, xls, ppt格式文件的轉(zhuǎn)化,靜態(tài)方法 getDocument返回一個(gè) lucene的 document類型。
LuceneSearcher用于軟件GUI的實(shí)現(xiàn)。針對(duì)某些圖片文件,比如Solid edge生成的.dwg,我們采取標(biāo)題檢索的方式找到圖片即可。
通過對(duì)原PDM系統(tǒng)全文檢索和Lucene改進(jìn)的全文檢索進(jìn)行對(duì)比實(shí)驗(yàn),如圖4,可見改進(jìn)后的Lucene全文檢索能將查詢結(jié)果按照匹配評(píng)分的高低排序給出,而原 PDM 系統(tǒng)全文檢索查詢結(jié)果為隨機(jī)排列。改進(jìn)后的評(píng)分和排序機(jī)制,基本實(shí)現(xiàn)了最相關(guān)的檢索結(jié)果與用戶需求目標(biāo)相匹配。Lucene全文檢索克服了 PDM 系統(tǒng)一次只能對(duì)某一種格式文件進(jìn)行檢索的不足,可同時(shí)對(duì)MSWord、MSExcel、MSPowerPoint等不同類型文件進(jìn)行全文檢索。
圖4 原PDM系統(tǒng)全文檢索結(jié)果(左)與 Lucene改進(jìn)的全文檢索結(jié)果(右)Fig.4 Full-text search results by original PDM system (left) and the results improved by Lucene (right).
為了完善上海光源對(duì)海量數(shù)據(jù)的管理、將研發(fā)流程電子化,進(jìn)行了產(chǎn)品數(shù)據(jù)管理系統(tǒng)(PDM)的開發(fā)。針對(duì)傳統(tǒng)基于Teamcenter的PDM系統(tǒng)檢索結(jié)果無序、檢索結(jié)果滿意度不高、無匹配程度控制、使用率低、不能模糊匹配等問題,引進(jìn)了 Lucene檢索系統(tǒng),結(jié)果表明,Lucene能顯著改善檢索效果。下一步將繼續(xù)對(duì)檢索效率與檢索文件類型進(jìn)行改善。
1 熊琦.產(chǎn)品數(shù)據(jù)管理PDM系統(tǒng)功能與應(yīng)用分析.電腦知識(shí)與技術(shù)(學(xué)術(shù)交流)[J].2007,4(19):10 XIONG Qi.Product data management system function and application analysis [J], Computer Knowledge and Technology, 2007,4(19) :10
2 賈廣飛, 楊鐵男.PDM的發(fā)展現(xiàn)狀及其CIMS中的應(yīng)用[J].河北工業(yè)科技.2002, 19(6): 35–38 JIA Guang-fei,YANG Tie-nan.Status and development of PDM and its application in CIMS[J], Hebei Journal of Industrial Science and Technology, 2002, 19(6) : 35–38
3 Otis Gospodnetic, Erik Hatcher.Lucene IN ACTION [Z].2006, 212–252
4 周登朋,謝康林.Lucene搜索引擎[J].計(jì)算機(jī)工程.2007.33(18): 95–96 ZHOU Dengpeng, XIE Kanglin [J].Lucene search engine,Computer Engineering, 2007.33(18): 95–96
5 王繼明,楊國(guó)林.基于 Lucene的中文文本分詞[J].內(nèi)蒙古工業(yè)大學(xué)學(xué)報(bào).2007, 26(3): 185–188 WANG Jiming,YANG Guolin.Chinese automatic wordcut base on Lucene [J], Journal of Inner Mongolia University of Technology, 2007, 26(3): 185–188
6 蘇潭英, 郭憲勇, 金鑫.一種基于 Lucene的中文全文檢索系統(tǒng)[J].計(jì)算機(jī)工程.2007, 33(23): 94–96 SU Tanying, GUO Xianyong, JIN Xin.Chinese full-text retrieval system based on Lucene [J], Computer Engineering, 2007, 33(23): 94–96
7 石磊.SSRF-PDM系統(tǒng)安裝配置文檔[Z].2008, 1: 1–3 SHI Lei.Configuration files of SSRF-PDM[Z], 2008, 1: 1–3