龔顯卿 蒲實(shí)
摘 要 對(duì)信息進(jìn)行方便快捷檢索是數(shù)據(jù)庫系統(tǒng)需要實(shí)現(xiàn)的一大重要功能。通過多重變量的使用,實(shí)現(xiàn)對(duì)多個(gè)字段進(jìn)行模糊檢索功能,提高素材檢索效率,也有助于程序的模塊化設(shè)計(jì)。
關(guān)鍵詞 PowerBuilder;數(shù)據(jù)庫;字段;模糊檢索;多重變量;視音頻素材
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1671-489X(2018)10-0039-03
Realization of Multi-field Fuzzy Retrieval about Video Audio Material based on PB//GONG Xianqing, PU Shi
Abstract Convenient and quick retrieval of information is an impor-
tant function of database system. In this paper, the fuzzy retrieval function of multiple fields is realized through the use of multiple variables, which improves the efficiency of the material retrieval and
the modular design of the program.
Key words PowerBuilder; database; filed; fuzzy retrieval; multiple variables; video audio material
1 前言
隨著教育信息化的深入發(fā)展,“只管數(shù)據(jù)采集不顧數(shù)據(jù)維護(hù)的粗放式管理模式比較普遍”[1],為了解決這樣的現(xiàn)象,人們需要設(shè)計(jì)和實(shí)現(xiàn)多種多樣的信息管理系統(tǒng),對(duì)越來越多的教育教學(xué)信息進(jìn)行管理。信息管理系統(tǒng)的一大主要功能就是方便人們對(duì)信息進(jìn)行查詢,以便對(duì)信息再利用。在對(duì)信息進(jìn)行查詢過程中,系統(tǒng)用戶并不總是能準(zhǔn)確知道所要查詢信息的準(zhǔn)確屬性。以一個(gè)視頻素材為例,用戶可能不知道它的準(zhǔn)確名稱、格式、上傳者、上傳日期、主要內(nèi)容等。針對(duì)這樣的情況,信息管理系統(tǒng)應(yīng)當(dāng)提供多種查詢方式供用戶選擇:1)單一字段的模糊檢索;2)多個(gè)字段的模糊檢索。本文以醫(yī)學(xué)視聽教材為例,實(shí)現(xiàn)對(duì)視聽教材的多字段模糊檢索,提高教材的檢索效率。
2 PowerBuilder及其數(shù)據(jù)過濾功能
PowerBuilder(下面簡(jiǎn)稱“PB”)采用面向?qū)ο缶幊碳夹g(shù)和可視化技術(shù),程序設(shè)計(jì)人員可以直觀地進(jìn)行程序設(shè)計(jì)。PB提供了眾多的畫板,如應(yīng)用程序畫板、數(shù)據(jù)庫畫板、數(shù)據(jù)窗口畫板等,設(shè)計(jì)人員通過這些畫板進(jìn)行程序設(shè)計(jì)。
數(shù)據(jù)窗口(Data Window)是PB獨(dú)有的一大特色。通過數(shù)據(jù)窗口,設(shè)計(jì)人員可以便捷地訪問后臺(tái)數(shù)據(jù)庫獲取數(shù)據(jù),并通過不同的顯示風(fēng)格將數(shù)據(jù)在應(yīng)用程序窗口中顯示出來。使用數(shù)據(jù)窗口需要先新建某種風(fēng)格的數(shù)據(jù)窗口對(duì)象,如Grid風(fēng)格數(shù)據(jù)窗口對(duì)象,再為數(shù)據(jù)窗口對(duì)象選擇數(shù)據(jù)源[2-5]。
PB數(shù)據(jù)過濾的基本方法 PB可以對(duì)數(shù)據(jù)窗口或數(shù)據(jù)存儲(chǔ)過程設(shè)置數(shù)據(jù)過濾規(guī)則。其過濾的實(shí)現(xiàn)分為兩步:第一步設(shè)置過濾規(guī)則;第二步進(jìn)行數(shù)據(jù)過濾。以數(shù)據(jù)窗口過濾為例,其實(shí)現(xiàn)過程為:
Integer dw_control.setfilter (string format)
integer dw_control.filter()
其中“dw_control”為數(shù)據(jù)窗口,“string format”為過濾規(guī)則。過濾規(guī)則為一條字符串,如“student_name=李四”;也可以是一個(gè)變量,但這個(gè)變量的值必須為一個(gè)字符串。以下兩種過濾方式等價(jià)。
方式一:
dw_1.setfilter( "student_name=李四")
dw_1.filter()
方式二:
string s_name
s_name="student_name=李四"
dw_1.setfilter(s_name)
dw_2.filter()
多重變量過濾規(guī)則 在實(shí)際應(yīng)用中,一個(gè)字段的值是在其值域范圍內(nèi)變化的,如學(xué)生的姓名可能是“張三”,也可能是“李四”,用戶在進(jìn)行檢索時(shí)根據(jù)自己的需要輸入檢索姓名。這反應(yīng)在程序開發(fā)中是對(duì)一個(gè)變量進(jìn)行檢索。在PB中,在字符串中引用變量需要在變量前、后添加“+”號(hào),例如:
string s_name,s_name_filter
s_name=sle_1.text
s_name_filter="student_name='"+ s_name +" '"
dw_1.setfilter(s_name_filter)
dw_1.filter()
上例中用戶在“sle_1”文本框中輸入需要查詢的學(xué)生姓名,保存在字符串變量“s_name”中。PB對(duì)在字符串中引用變量的格式有嚴(yán)格要求,其順序?yàn)椋簡(jiǎn)我?hào),雙引號(hào),“+”號(hào),空格,變量名,空格,“+”號(hào),雙引號(hào),空格,單引號(hào)。如果出現(xiàn)錯(cuò)誤,過濾規(guī)則將設(shè)置失敗。
模糊檢索 如前文所述,用戶在進(jìn)行檢索時(shí)并不一定準(zhǔn)確知道學(xué)生的姓名,可能僅知道其姓名中的一部分,所以在程序開發(fā)過程中實(shí)現(xiàn)對(duì)字段的模糊檢索是信息管理系統(tǒng)一個(gè)主要功能,能夠極大地提高系統(tǒng)的實(shí)用性和用戶體驗(yàn)。PB中可以使用“%”符號(hào)來代替不確定的字符,通過“l(fā)ike”關(guān)系操作符來匹配用戶指定的不完整的檢索參數(shù),例如:
string s_name,s_name_filter
s_name=sle_1.text
s_name_filter="student_name like '%"+s_name+"%'"
dw_1.setfilter(s_name_filter)
dw_1.filter()
3 視音頻素材的關(guān)系模式
在關(guān)系數(shù)據(jù)庫中對(duì)素材的檢索是基于素材的屬性實(shí)現(xiàn)的,在進(jìn)行數(shù)據(jù)庫設(shè)計(jì)時(shí),對(duì)于素材屬性的抽象應(yīng)該緊密結(jié)合實(shí)際使用需求,不是越多越好、越細(xì)越好。在醫(yī)學(xué)視音頻素材實(shí)際使用中,師生更習(xí)慣于按照素材的學(xué)科分類、素材名稱、素材上傳者、教材出版社、素材內(nèi)容(基于文字描述)等關(guān)鍵詞對(duì)教材進(jìn)行檢索。視音頻素材的實(shí)體—聯(lián)系(E-R)模型如圖1所示。
在視音頻素材關(guān)系中,素材編號(hào)為主鍵,唯一標(biāo)識(shí)關(guān)系中的一個(gè)記錄,“素材類型”的值域?yàn)椤癉={學(xué)校資料,教學(xué)資料,學(xué)術(shù)報(bào)告,文娛晚會(huì)}”。“素材院系”的值域?yàn)閷W(xué)校內(nèi)設(shè)有的行政機(jī)構(gòu)、教學(xué)院系,“素材科室”為學(xué)校各行政機(jī)構(gòu)、教學(xué)院系下對(duì)應(yīng)的科室、專業(yè)。之所以按照學(xué)校專業(yè)設(shè)置對(duì)素材進(jìn)行分類,而不嚴(yán)格按照醫(yī)學(xué)學(xué)科分類,一是為了符合學(xué)校實(shí)際,避免大而全的分類方式;二是為了兼顧學(xué)術(shù)講座、院系學(xué)術(shù)會(huì)議等其他類別視音頻資料的保存。“素材內(nèi)容”是對(duì)視音頻素材內(nèi)容的文字描述。
4 多字段模糊檢索的實(shí)現(xiàn)
為提高用戶對(duì)系統(tǒng)的使用體驗(yàn),用戶可以對(duì)素材的“素材名稱”“出版社”“素材上傳者”“素材審核者”“素材類別”“素材院系”“素材科室”“素材上傳日期”“素材內(nèi)容”等條件進(jìn)行單獨(dú)檢索,也可以對(duì)以上條件進(jìn)行組合檢索。檢索界面設(shè)計(jì)如圖2所示。
檢索界面左側(cè)為檢索條件輸入。“素材名稱”“出版社”“素材上傳者”“素材審核者”“素材內(nèi)容”為文本輸入,“素材類別”“素材院系”“素材科室”“素材上傳日期”為下拉列表,用戶在列表中選擇查詢條件。為“查詢”按鈕編輯查詢程序,當(dāng)用戶點(diǎn)擊查詢時(shí),按用戶指定的查詢條件對(duì)素材進(jìn)行查詢。
//定義查詢變量
sc_mc=sle_1.text
sc_cbs=sle_2.text
sc_scz=sle_3.text
sc_shz=sle_4.text
sc_lb=ddlb_1.text
sc_yx=ddlb_2.text
sc_ks=ddlb_3.text
sc_date_q=ddlb_4.text
sc_date_z=ddlb_5.text
sc_nr=sle_5.text
if isnull(sc_mc)=true then //如果用戶沒有指定“素材名稱”
chaxun_tiaojian_mc="sc_name like '%'"
else //如果用戶指定了“素材名稱”
chaxun_tiaojian_mc="sc_name like '%"+sc_mc+"%'"
end if
if isnull(sc_date_q)=true then //如果沒有設(shè)置查詢“起始日期”
sc_date_q=string(1980-01-01)
else //如果設(shè)置了查詢“起始日期”
sc_date_q=sc_date_q+"-01"+"-01"
end if
if isnull(sc_date_z)=true then //如果沒有設(shè)置查詢“終止日期”
sc_date_z=string(today())
else //如果設(shè)置了查詢“終止日期”
sc_date_z=sc_date_z+"-12"+"-31"
end if
chaxun_tiaojian_date="sc_date>=date('"+sc_date_q+"') and & t_sucai_shangchuan_sucai_date<=date('"+sc_date_z+"')"
//其他查詢條件設(shè)置
dw_1.setfilter("("+chaxun_tiaojian_mc+") and &
("+chaxun_tiaojian_czcbs+") and &
("+chaxun_tiaojian_scz+") and&
("+chaxun_tiaojian_shz+") and&
("+chaxun_tiaojian_lb+") and&
("+chaxun_tiaojian_yuanxi+") and &
("+chaxun_tiaojian_ks+") and &
("+chaxun_tiaojian_ms+") and("+chaxun_tiaojian_date+")")
dw_1.filter()
r_count=dw_1.retrieve()
for i=0 to r_count step 1
//在數(shù)據(jù)窗口中顯示檢索到的素材
next
如果需要在存儲(chǔ)過程中對(duì)數(shù)據(jù)進(jìn)行過濾,需要先定義一個(gè)存儲(chǔ)過程,然后對(duì)該存儲(chǔ)過程設(shè)置過濾規(guī)則。
datastore ds_sc_video
ds_sc_video=create datestore
ds_sc_video.dataobject="d_sc_video"
ds_sc_video.setfilter(查詢條件)
ds_sc_video.filter()
r_count=ds_sc_video.retrieve()
for i=0 to r_count step 1
//在數(shù)據(jù)窗口中顯示檢索到的素材
next
5 結(jié)束語
數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)應(yīng)注重系統(tǒng)的實(shí)用性,提高用戶使用體驗(yàn)。本文所提出的多字段模糊檢索功能通過多重變量的使用實(shí)現(xiàn)了對(duì)多個(gè)字段的模糊檢索,這在程序設(shè)計(jì)中有助于程序的模塊化設(shè)計(jì),在實(shí)際使用中也提高了素材的檢出率,得到用戶的好評(píng)。
參考文獻(xiàn)
[1]教育信息化“十三五”規(guī)劃[DB/OL].[2016-06-07].http://www.moe.edu.cn/srcsite/A16/s3342/201606/t2016
0622_269367.html.
[2]郭新順.基于PowerBuilder數(shù)據(jù)窗口的查詢方法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2006,23(5):76-77,110.
[3]華銓平.PowerBuilder程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004.
[4]劉大本.PowerBuilder程序設(shè)計(jì)教程[M].北京:中國(guó)水利水電出版社,2004.
[5]王艷青.PowerBuilder程序設(shè)計(jì)基礎(chǔ)[M].北京:中國(guó)水利水電出版社,2006.