程傳鵬
(中原工學(xué)院,鄭州450007)
基于Trip數(shù)據(jù)庫的檔案管理系統(tǒng)的設(shè)計與實現(xiàn)
程傳鵬
(中原工學(xué)院,鄭州450007)
結(jié)合Trip數(shù)據(jù)庫在處理非規(guī)范性文檔方面的優(yōu)勢,設(shè)計出了一種基于Trip數(shù)據(jù)庫的檔案入庫系統(tǒng),實現(xiàn)了紙質(zhì)檔案的電子存儲,為電子文檔內(nèi)容的直接檢索做好了前期工作.實驗結(jié)果表明,本系統(tǒng)提高了數(shù)據(jù)存儲空間的利用率.
非規(guī)范性數(shù)據(jù);檔案管理;Trip數(shù)據(jù)庫;文本提取
隨著計算機無紙辦公技術(shù)應(yīng)用的普及,各種格式的電子文件資料大量涌現(xiàn),不僅有文字資料,還有聲音、圖像、動畫、視頻等等[1].這些文檔結(jié)構(gòu)無定、類型各異、規(guī)格不一、長度參差,不能直接轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫的字段信息,因而不能被傳統(tǒng)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)有效地處理,大大降低了這些數(shù)據(jù)的使用價值.據(jù)統(tǒng)計,諸如此類的非規(guī)范性數(shù)據(jù)信息占了互聯(lián)網(wǎng)上數(shù)據(jù)的80%.傳統(tǒng)的關(guān)系型數(shù)據(jù)庫由于自身的局限性,已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足今天非規(guī)范性數(shù)據(jù)快速增長的需要.為了解決關(guān)系數(shù)據(jù)庫在非規(guī)范性數(shù)據(jù)處理上的不足,1985年瑞典Paralog公司在皇家工學(xué)院的圖書情報檢索專用軟件3RIP基礎(chǔ)上,開發(fā)出了專為處理非規(guī)范性數(shù)據(jù)的軟件系統(tǒng)Trip系統(tǒng)[1].本文分析了Trip數(shù)據(jù)庫在處理非規(guī)范性電子文檔上的優(yōu)勢,并在此基礎(chǔ)上,利用Trip數(shù)據(jù)庫設(shè)計出了一種電子文檔管理系統(tǒng).
目前的檔案管理系統(tǒng)大都是基于關(guān)系數(shù)據(jù)庫的,但關(guān)系型數(shù)據(jù)庫是二維平面結(jié)構(gòu),表的一行表示一個記錄,表的一列代表記錄中的一個字段,一個字段只允許放一個實體.Trip是多維結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng),記錄由字段組成,每一個字段容許存放任意多個實體.子字段自動帶有編號,彼此相互獨立.Trip記錄的字段長度不限,設(shè)計數(shù)據(jù)庫字段時不需預(yù)定其大小.關(guān)系型數(shù)據(jù)庫的字段長度在設(shè)計數(shù)據(jù)庫時必須設(shè)定,裝庫時如果數(shù)據(jù)內(nèi)容不夠量,它就不會“省”出沒用完的空間,而數(shù)據(jù)多于設(shè)定值時,超過部分又沒法存進去.Trip是多維結(jié)構(gòu)的數(shù)據(jù)庫,比較適合于大量不定長數(shù)據(jù)的存儲.Trip數(shù)據(jù)庫是面向大數(shù)據(jù)對象設(shè)計開發(fā)的,數(shù)據(jù)庫文件只由3個文件組成,分別是數(shù)據(jù)文件baf、檢索詞文件bif和詞根文件vif,因此數(shù)據(jù)庫的存儲、復(fù)制、查詢、維護都很方便.對于數(shù)據(jù)量以“百萬字節(jié)”計的多媒體信息的存儲而言,Trip是很好的選擇.
此外,Trip可隨時追加新字段.如首次設(shè)計數(shù)據(jù)庫時建立了20個字段,使用一段時間后要增加5個字段,這時只需加上這5個字段即可,已有記錄中的數(shù)據(jù)照常使用.而關(guān)系型數(shù)據(jù)庫則做不到.Trip是管理存儲各種電子文檔資料的最佳解決方案,它有一種專門存儲二進制數(shù)據(jù)的字段,不僅能存儲多達200多種不同格式的電子文件,如 Word、PDF、PowerPoint、Excel、Access等[2],而且能自動抽取這些文件之中的文字信息,形成倒排文件,供人們進行全文內(nèi)容的快速查找.在處理非規(guī)范性數(shù)據(jù)方面,尤其是當(dāng)前普遍面臨文、圖、音、視信息等大量多媒體信息管理的情況下,Trip要比關(guān)系型數(shù)據(jù)庫強很多.
檔案數(shù)據(jù)庫管理,首先要將紙質(zhì)檔案轉(zhuǎn)變?yōu)橛嬎銠C能夠存儲的數(shù)字化成果,即對所有未數(shù)字化的檔案進行掃描,整理其屬性信息,并進行數(shù)據(jù)存儲,最終為數(shù)字化檔案提供安全高效的管理方法,從而取代現(xiàn)有的管理方式[3].檔案管理系統(tǒng)結(jié)構(gòu)如圖1所示.
檔案管理系統(tǒng)主要實現(xiàn)如下4個方面的功能:
(1)檔案掃描.改變了傳統(tǒng)的用掃描儀掃描檔案的方法,采用系統(tǒng)控制高速掃描儀方式進行掃描,既保證了掃描檔案的質(zhì)量,又顯著提高了工作效率.并且檔案掃描后直接自動存人數(shù)據(jù)庫內(nèi),改變了傳統(tǒng)的人工手動入庫工作量大、速度慢的缺點.
圖1 檔案管理系統(tǒng)結(jié)構(gòu)圖
(2)數(shù)據(jù)建庫.不同時期的檔案,管理方式不同,因此對其進行分開存儲和管理.為維護數(shù)據(jù)的實時性,系統(tǒng)提供對數(shù)據(jù)庫的維護與更新功能.
(3)文本信息提取.對存入數(shù)據(jù)庫的二進制文件進行文本提取,提取后的文本信息同樣也保存在數(shù)據(jù)庫里,為后續(xù)的基于電子文檔內(nèi)容的信息檢索做好前期工作.
(4)用戶管理.通過角色和活動的權(quán)限來進行統(tǒng)一的管理.根據(jù)業(yè)務(wù)分工,將系統(tǒng)的管理權(quán)限和角色關(guān)聯(lián),即角色的權(quán)限只定義和系統(tǒng)模塊相關(guān)聯(lián)的權(quán)限,通過角色權(quán)限的管理,控制用戶對系統(tǒng)的入庫、編輯、查詢、刪除、打印等權(quán)限.
Trip的數(shù)據(jù)庫由記錄組成,記錄又由字段組成.Trip記錄中的字段可容納7種不同類型的信息,包括Phrase、Integer、Number、Text、Date、Time、String.其中,String類型可以存放二進制信息,記錄中字段的個數(shù)不限.除正文、字串?dāng)?shù)據(jù)類型外,其他類型字段下分子字段(subfield),正文類型字段下分段落(paragraph),段落之中又分句子(sentence),句子之中又分詞(word).字段中子字段的數(shù)量也是沒限制的.
設(shè)計數(shù)據(jù)庫時,可以事先準(zhǔn)備好一個數(shù)據(jù)庫定義文本文件base-name.def,通過 Trip系統(tǒng)提供的import命令,在命令窗里直接生成數(shù)據(jù)庫結(jié)構(gòu):
import base=base-name file=base-name.def數(shù)據(jù)庫定義文件base-name.def的格式如下:
OPTIONS=5
(
FieldName:n PHRASE NOX COM(title),
……
)
其中,F(xiàn)ieldName指的是字段名,最長16個英文字符,后用“:”;n指的是字段號,用數(shù)字表示;PHRASE指的是字段類型;NOX指的是不需要倒排,需要倒排時,為空白;COM(title)指的是字段說明,說明性文字放在圓括號內(nèi).
本系統(tǒng)中最重要的數(shù)據(jù)庫有2個:一個是文檔數(shù)據(jù)庫,一個是用戶數(shù)據(jù)庫.
與文字?jǐn)?shù)據(jù)不同,當(dāng)一個電子文件存放在Trip數(shù)據(jù)庫記錄中時,需4個字段來描述.第一個字段定義為PHRASE字段,用來存放文件名;第二個字段定義為String字段,用來存放全部文件內(nèi)容的信息;第三個字段定義為Integer字段,用來存放文件大小的數(shù)值;第四個字段定義為Text字段,用來存放從原格式文件抽取出來的文字內(nèi)容.
文檔數(shù)據(jù)庫定義文件base-name.def的格式如下:
OPTIONS=5
(
FILE-NAME:1PHRASE COM(15),
FILE-EXTRACT:2STRING COM(15),F(xiàn)ILE-SIZE:3INTEGER COM(15),
FILE-STRING:4TEXT NOX COM(15)
)
本系統(tǒng)有3類用戶:系統(tǒng)管理員、數(shù)據(jù)管理員和普通用戶.
系統(tǒng)管理員的用戶名為system,他有最高系統(tǒng)權(quán)限,只有他才可創(chuàng)建數(shù)據(jù)管理員(FM)、用戶經(jīng)理(UM).系統(tǒng)管理員本身也是FM和UM,有建立數(shù)據(jù)庫和開設(shè)新用戶的權(quán)限.FM有權(quán)建造數(shù)據(jù)庫,并授權(quán)給用戶或用戶組去訪問該數(shù)據(jù)庫.只有經(jīng)他授權(quán)的用戶(包括創(chuàng)建文件經(jīng)理的系統(tǒng)管理員)才能使用他創(chuàng)建的數(shù)據(jù)庫.UM有權(quán)建立新的用戶或用戶組.一個Trip系統(tǒng)可以有不限量的FM或UM.
用戶數(shù)據(jù)庫定義文件base-name.def的格式如下:
OPTIONS=5
(
USERNAME:1PHRASE COM(name)
RIGHT:2PHRASE COM(right),
ISGROUP:3TEXT COM(group),
BELONGGROUP:4PHRASE
CREATOR:5PHRASE
CREATETIME:6PHRASE
DESCRIPTION:7PHRASE
}
首先,在Visual C++6.0中新建一個MFC AppWizard(exe)項目文件,在AppWizard第一步中選擇基于對話框項,第二項中選擇Active Controls復(fù)選框,其他缺省.這樣建立了一個以對話框為主窗口的應(yīng)用程序.然后,在Resource View中新建對話框,將該對話框的ID改為IDD-SCANNER-DIALOG,將對話框的Caption設(shè)置為scanner.
在Visual C++6.0主菜單中單擊【Project】→【Add to Project】→ 【Componentsand Controls】→【Register Active Controls】命令,在對話框中將出現(xiàn)許多控件,在這些控件中選擇Kodak圖像掃描控件,再單擊Insert鍵,即完成添加任務(wù).此時在ClassView中可以看到新添加的CImgScan類,查看類的源文件imgscan.cpp,可深入了解該控件的屬性和使用方法[4].
通過Visual C++6.0的ClassWizard,添加類型為CImgScan的成員變量m-scaner,在對話框上添加“開始掃描”按鈕控件,設(shè)置該按鈕控件的ID為IDC-STARTS.然后,在工程中加入如下代碼:
void CScannerDIg:OnStarts()
{
if(!m scaner ScannerAValIabIe())
{
AfxMessageBox(“掃描儀打開失敗”):
exit(0):
)
else if(m-scaner OpenScanner())
{
AfxMessageBox((“掃描儀打開失敗”):
exit(0):
}
else if(m-scaner Sta rtScan())
{
AfxMessageBox((“掃描儀打開失敗”):exit(0):
)
)
Trip產(chǎn)品族提供了一個進程內(nèi)的組件Tripcom,通過調(diào)用Tripcom組件,可以完成對數(shù)據(jù)庫的添加、刪除、查找等一些基本操作.為了在程序中使用Tripcom組件,首先需要安裝Tripclient組件,并自動完成Tripcom組件的注冊.在APP程序的頭文件中添加語句#import"Tripcom.dll"no-namespace,以引入Tripcom組件,并在在函數(shù)BOOL CTheApp Initlnstance()中對COM環(huán)境初始化,語句如下:Colnitialize(NULL).
為了在程序中使用Trip數(shù)據(jù)庫,需要先連接數(shù)據(jù)庫,步驟如下:
(1)在 APP頭文件中聲明ITdbSessionPtr ptr-Session;
(2)通過以下的語句來創(chuàng)造會話對象實例:
HRESULT hr= ptrSession.CreateInstance("Tripcom.TdbSession.1");
(3)連接數(shù)據(jù)庫,語句如下:
ptrSession->Open("username","PassWord","localhost",TDB-LANG-DEFAULT,"",false,"pctdbs",300,30,0,0);
(4)通過定義的引用ITdbSessionPtr&ptrSession,返回會話變量.
要把二進制文件上傳到數(shù)據(jù)庫,需要用到Copy-FromFileExtractText函數(shù),其語法格式如下:
CopyFromFileExtractText(filename As String,asciifield As String,options As Long,filterargs As String)
其中各參數(shù)的意義如下:
filename:文件名,包括路徑;
asciifield:存放所抽取文本的字段名稱;
options:選項;
filterargs:標(biāo)志,一般為空.
這個函數(shù)不僅能上載文件,而且能提取文檔中的文本字符.程序中上載文件的代碼如下:
paramFieldName.bstrVal=L"FILE-STRING";
ptrField=ptrRecord->Field(&paramFieldName);
if(ptrField)
{
ptrField->CopyFromFileExtractText(csFile-FullPath.AllocSysString(),"FILE-EXTRACT",TRIP-RUN-ON-SERVER,"");
}
Trip產(chǎn)品族提供的TripView組件是一種文檔檢索管理組件,它能將220多種不同格式的電子文檔存放在Trip的數(shù)據(jù)庫之中,同時自動抽取其中的文字內(nèi)容建立倒排文件,供用戶快速查看,最終顯示出和原有文檔完全相同的視圖.
在程序中實現(xiàn)文檔預(yù)覽的步驟如下:
(1)安裝TripView,同時系統(tǒng)自動完成ActiveX控件的注冊;
(2)單擊【Project】->【Add To Project】->【Components And Controls】,打開【Components And Controls Gallery】對話框,如圖2所示;
(3)選擇【Registered ActiveX Controls】文件夾中的【Tripviewer Control】,單擊【Insert】,將TripViewer控件添加到工程中;
圖2 添加TripView控件圖
(4)單擊工具箱上的TripView控件,將此控件添加到對話框上,然后在對話框的.h頭文件中聲明TripView 對象:CTRIPviewer m-TripViewer;
(5)如果要顯示磁盤上的文件,則需要用到View-File方法,代碼如下:
m-TripViewer.ViewFile(FileName)
其中,F(xiàn)ileName指的是包含完整磁盤路徑的文件名.
如果要顯示存放在數(shù)據(jù)庫字段中的文件,則用如下代碼:
paramFieldName.bstrVal=L"FILE-STRING";
ptrField=ptrRecord->Field(&paramFieldName);
if(ptrField)
{
ptrField->View(long(m-TripViewer.mhWnd),false,"","");
UpdateData(false);
}
為了比較Trip數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫在處理電子文檔方面的優(yōu)劣,本文選擇了100份紙質(zhì)文檔,經(jīng)過掃描儀掃描后,形成PDF文件,文件大小為45.7MB.分別采用Trip數(shù)據(jù)庫和目前流行的SQL Server2005關(guān)系數(shù)據(jù)庫對這些PDF文件進行存儲和檢索.分別從二進制文件的存儲、文檔的預(yù)覽、電子文檔的信息提取等方面以及存儲空間的利用率、檢索時間指標(biāo)進行比較,結(jié)果如表1所示.
表1 關(guān)系數(shù)據(jù)庫和Trip數(shù)據(jù)庫的比較
其中存儲空間利用率按如下公式計算:
以不同的關(guān)鍵字進行100次檢索,以這些檢索時間的平均值作為平均檢索時間,計算公式如下:
從1表可以看出,雖然二者都能存儲二進制文件,但是關(guān)系數(shù)據(jù)庫不能預(yù)覽文檔,也不能提取電子文檔中的文字信息,并且關(guān)系數(shù)據(jù)庫的存儲效率和檢索時間都要劣于Trip數(shù)據(jù)庫.
本文針對電子文檔的特點,利用Trip數(shù)據(jù)庫在處理電子文檔上的優(yōu)勢,設(shè)計出了一種基于Trip數(shù)據(jù)庫的的電子文檔管理系統(tǒng).實驗結(jié)果表明,采用Trip數(shù)據(jù)庫來處理電子文檔,不僅能提高存儲空間的利用效率,而且檢索效率也要優(yōu)于傳統(tǒng)的關(guān)系數(shù)據(jù)庫.在以后的工作中,我們將利用Trip所提供的功能,來提取電子文檔中的文本信息,為下一步對電子文檔內(nèi)容的直接檢索創(chuàng)造條件.
[1] 陳振宇.全文數(shù)據(jù)庫TRIP在知識管理系統(tǒng)中的應(yīng)[D].北京:北京郵電大學(xué),2005.
[2] 王偉.TIRP數(shù)據(jù)庫系統(tǒng)的優(yōu)勢[J].安徽科技,2008(4):50-51.
[3] 王振興,楊敏華,吳勰,等.檔案掃描入庫管理系統(tǒng)設(shè)計與實現(xiàn)[J].測繪科,2008,33(2):195-197.
[4] 游明星.VC++6.0中利用圖像掃描控件控制掃描儀[J].電腦編程技巧與維護,2000(10):77-78.
The Design and Implementation of Archives Management System Based on Trip Database
CHENG Chuan-peng
(Zhongyuan Institute of Technology,Zhengzhou 450007,China)
An archives management system based on trip database is designed according to the advantage of trip database on non-normative,the paper archives is transformed into electronic document and stored in the management system.Preliminary works that context of electronic document is retrieved directly is prepared.Test results show that the system improves the efficiency of data storage space utilization.
non-normative data;archives management system;trip database;text extraction
TP391.07
A
10.3969/j.issn.1671-6906.2012.01.011
1671-6906(2012)01-0044-05
2012-02-04
程傳鵬(1977-)男,河南信陽人,講師,碩士.