毛金玲
摘要:本文深入研究了關(guān)系數(shù)據(jù)庫(kù)的關(guān)鍵字檢索的檢索機(jī)制和
關(guān)鍵技術(shù),包括構(gòu)建全文索引、構(gòu)建數(shù)據(jù)庫(kù)模式圖、查詢語(yǔ)言及查詢結(jié)果生成等等。通過(guò)分析相關(guān)檢索系統(tǒng)的實(shí)現(xiàn)策略,給出了面向關(guān)系數(shù)據(jù)庫(kù)的關(guān)鍵字查詢的形式化描述,設(shè)計(jì)了支持關(guān)鍵字檢索的系統(tǒng)架構(gòu)和核心構(gòu)成組件,主要包括數(shù)據(jù)庫(kù)索引、關(guān)鍵字檢索和結(jié)果生成。
關(guān)鍵詞:關(guān)系數(shù)據(jù)庫(kù) ?關(guān)鍵詞查詢 ?數(shù)據(jù)庫(kù)索引
1 系統(tǒng)總體設(shè)計(jì)
人們?cè)谇蠼庖粋€(gè)復(fù)雜問(wèn)題時(shí),通常采用的是逐步分解、分而治之的方法。也就是把一個(gè)大問(wèn)題分解成若干個(gè)比較容易求解的小問(wèn)題,然后分別求解。設(shè)計(jì)一個(gè)復(fù)雜的系統(tǒng)時(shí),往往也是把整個(gè)系統(tǒng)劃分為若干個(gè)功能較為單一的功能模塊,然后分別予以設(shè)計(jì)、實(shí)現(xiàn),這就是模塊化設(shè)計(jì)。本系統(tǒng)也采用這種模塊化設(shè)計(jì)方式。
■
圖1 ?面向關(guān)系數(shù)據(jù)庫(kù)關(guān)鍵字查詢系統(tǒng)框圖
2 數(shù)據(jù)庫(kù)設(shè)計(jì)
本系統(tǒng)為面向關(guān)系數(shù)據(jù)庫(kù)的關(guān)鍵字查詢系統(tǒng),在實(shí)驗(yàn)中本文選取了IMDB 數(shù)據(jù)集,為了進(jìn)行實(shí)驗(yàn),將數(shù)據(jù)集整理為以下七個(gè)表數(shù)據(jù)結(jié)構(gòu)。
實(shí)驗(yàn)數(shù)據(jù)集(電影信息數(shù)據(jù)庫(kù)):
create table Actor( ? ? //演員表
actorname varchar(50) Primary Key ; ? //演員姓名key
sex varchar(2); ? ? //性別
mvname varchar(50); ? ?//出演電影或電視劇名
mvyear varchar(10); ? ?//電影上映時(shí)間
mvactorname varchar(10); ? //電影中人物姓名
position varchar(20); ? ?//電影中人物排名
made varchar(10); ? //TV 或是Video
setname varchar(50); ? ? //出演電視劇集名
episode varchar(10); ? //出演電視劇集
date varchar(10); ? ? //電視劇播出日期
classification varchar(30); ?//(achieve football)
)
creat table Consume( ? ?//設(shè)計(jì)師
consumename varchar(20) Primary Key; ? ? //設(shè)計(jì)師姓名key
mvname varchar(20); ? ? //電影名或電視劇名
mvyear varchar(10); ? ? //上映日期
setname varchar(20); ? ?//電視劇集名
episode varchar(10); ? //電視劇集
productiondate varchar(10); ?//電視劇播放日期
classification varchar(30); ? ? //(as M...)
made varchar(10); ? ?///(V/TV/uncredited)
)
creat table Director( ? //導(dǎo)演信息
directorname varchar(20) Primary Key; ? //導(dǎo)演姓名key
mvname varchar(20); ? ? ?//電影或電視劇名
mvyear varchar(10); ? ? ? //上映日期
setname varchar(20); ? ?//電視劇集名
episode varchar(20); ? ?//電視劇集
made varchar(10); ? ?//(V/TV/VG)
explantaion varchar(30); ? ? ?//(as M...)
)
creat table Business( ? ? //投資
mvname varchar(20) Primary Key; ? ? ?//電影名key
productiondate varchar(20); ?//拍攝日期
company varchar(50); ? ? ?//出品公司
studiodate varchar(50); ? ? //上映日期
masterpiece varchar(1000);///OW
budget varchar(20); ? ? ?//預(yù)算
ad varchar(50); ? ? ///AD
general_revenue varchar(20); ? //收入
wg varchar(50); ?//WG
)
creat table Editor( ? ?//編輯
editorname varchar(20) ?Primary Key; ? ? //編輯名
mvname varchar(20); ? ? ? //電影或電視劇名key
mvyear varchar(10); ? ? ?//上映日期
made varchar(10); ? //(V/TV/video)
setname varchar(20); ? //電視劇集名key
episode varchar(20); ? //電視劇集key
explantaion varchar(30); ? //(as M...)
)
creat table Color { ?//顏色信息
mvname varchar(20); ? ?//電影或電視劇名key
mvyear varchar(10); ? ? //上映日期
setname varchar(20); ? //電視劇集名key
episode varchar(20); ?//電視劇集key
color varchar(20); ? //顏色分類color或black and white
explantaion varchar(10); //顏色分類之后的()中有(HD)等,(HD)是高清
Primary Key(mvname,setname,episode);
}
creat table Keyword( ? ? //關(guān)鍵詞
mvname varchar(20); ? ?//電影或電視劇名key
mvyear varchar(10); ? ?//上映日期
setname varchar(20); ? ?//電視劇集名key
episode varchar(10); ? ?//電視劇集key
keyword varchar(50); ? ?//關(guān)鍵詞
Primary Key(mvname,setname,episode);
)
3 數(shù)據(jù)庫(kù)索引設(shè)計(jì)
由于關(guān)系型數(shù)據(jù)庫(kù)對(duì)于文本屬性上全文索引的支持,所以在文本屬性可以直接利用數(shù)據(jù)庫(kù)中的全文索引。對(duì)于給定的關(guān)鍵字k,全文索引能檢索出查詢關(guān)鍵字所在位置。
對(duì)于數(shù)據(jù)庫(kù)中的表屬性,構(gòu)建索引的方式比較簡(jiǎn)單,依賴于DBMS的IR索引。對(duì)于數(shù)據(jù)庫(kù)中具有文本屬性的列,在該列上建立全文索引。在進(jìn)行關(guān)鍵字查詢時(shí),對(duì)于給定的關(guān)鍵字,通過(guò)數(shù)據(jù)庫(kù)的全文索引,會(huì)返回包含該關(guān)鍵字的元組集合。
在進(jìn)行關(guān)鍵字查詢的時(shí)候,對(duì)于用戶給定查詢關(guān)鍵字,系統(tǒng)首先要對(duì)給定的關(guān)鍵字進(jìn)行定位,確定關(guān)鍵字所匹配的信息是模式項(xiàng)還是數(shù)值項(xiàng)。
例如,關(guān)鍵字{“Color”“Director”}的索引結(jié)構(gòu)如表1所示。
表1 ?關(guān)鍵字{“Color”“Director”}的索引結(jié)構(gòu)
■
4 關(guān)鍵字檢索設(shè)計(jì)
在搜索引擎行業(yè),所謂關(guān)鍵字,就是用戶在使用搜索引擎時(shí)輸入的、能夠最大程度概括用戶所要查找的信息內(nèi)容的字或者詞,是信息的概括化和集中化。關(guān)鍵字檢索作為一種易于使用的檢索方式,為大量普通用戶所喜愛(ài)。本文從關(guān)鍵字個(gè)數(shù)角度介紹現(xiàn)有的關(guān)鍵字檢索技術(shù)中最常見(jiàn)的單關(guān)鍵字查詢和多關(guān)鍵字查詢這兩種關(guān)鍵字檢索形式。
5 結(jié)果生成設(shè)計(jì)
在本文中,將查詢結(jié)果定義為元組連接樹(shù)。
元組連接樹(shù)(Joined Tuple Tree)是給定一個(gè)數(shù)據(jù)庫(kù)模式圖GS,一個(gè)元組連接樹(shù)T是一棵元組樹(shù)。其中,T中的每一條邊(ti,tj)(ti∈Ri,tj∈Rj)滿足以下兩個(gè)要求:
①(Ri,Rj)∈RS,
②ti∞tj∈Ri∞Rj。
同時(shí)這些元組連接樹(shù)滿足以下條件:
①完整性:用戶提交的所有關(guān)鍵字均出現(xiàn)在元組連接樹(shù)上;
②最小性:從元組連接樹(shù)中移除任何元組后的元組連接樹(shù)都不具有完整性。
6 結(jié)束語(yǔ)
通過(guò)分析相關(guān)檢索系統(tǒng)的實(shí)現(xiàn)策略,設(shè)計(jì)了支持關(guān)鍵字檢索的系統(tǒng)架構(gòu)和核心構(gòu)成組件,主要包括數(shù)據(jù)庫(kù)索引、數(shù)據(jù)庫(kù)模式圖、關(guān)鍵字檢索和結(jié)果生成。
參考文獻(xiàn):
[1]吳清怡,馬良荔,孫煜飛.基于數(shù)據(jù)關(guān)系表的XML查詢算法[J].遼寧工程技術(shù)大學(xué)學(xué)報(bào)(自然科學(xué)版),2013(01).
[2]林子雨,楊冬青,王騰蛟,張東站.基于關(guān)系數(shù)據(jù)庫(kù)的關(guān)鍵詞查詢[J].軟件學(xué)報(bào),2010(10).
[3]張穎,李昕.一種關(guān)系數(shù)據(jù)庫(kù)上的關(guān)鍵詞查詢排序方法[J].遼寧工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2013(05).