Oracle Text技术在复杂结构数据库中的应用

第21700貅7耜期

年4月

计算机技术与发展、,。m.17No.4COMPUTERTECHNOLOGYANDDEVELOPMEN'FApr.2007

OracleText技术在复杂结构数据库中的应用

蒙辉,陈燕

(广西大学计算机与电子信息学院,广西南宁530004)

摘要:全文检索技术是智能信息管理的关键技术之一,OracleText作为Oracle9i的一个组件,提供了强大的全文检索功能。但Oracle’Fext全文检索技术只是针对表结构相对固定的数据库,而对表结构以及表数量不断变化的数据库实现全文检索的能力是不足的。文中介绍了OracleText全文检索技术的方法和步骤,阐述了其在复杂结构数据库中的具体应用,最后程序实现了所设计的全文检索技术。

关键词:OracleText;复杂结构数据库;全文检索

中图分类号:TP391.3文献标识码:A文章编号:1673—629X(2007)04—0038—03ApplicationofOracleTextinComplex‘。StructuredDatabase

h诬NGHUi,CHENYan

(CollegeofComputer,Electronicsandlnfomlation,GuangxiUniversity,Nanning530004,China)

Abstract:Full—textsearchingisoneofthemajortechnologiesofintelligentinformationsystem,andOracleTexthaseffectivefull—textsearchingtechnology鹊oneofcomponentofOracle9i.But.OracleTextjustci3nbeusedinthefixed—structuredatabase,andCall’tbeuseddirectlyincomplex—structureddatabase.Amethodofthefull—textsearchingusingtheOracleTextincomplex—structureddatabaseisintroduced,andearlbeimprovedbyusingprograminthispaper.

Keywords:OracleText;mmplex——structureddatabase;full——textsearch

O引言

OracleText是Oracle提供的一个服务集,功能十分强大,它可以为文档提供索引方法进行检索,还可以对文档进行格式转换、存储和管理等。使用OracleText全文检索技术,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展uJ。

但是,OracleText全文检索功能只是针对表结构相对固定的数据库,而对表结构以及表数量不断变化的数据数据库实现全文检索的能力是不足的。文中将介绍OracleText全文检索在复杂结构数据库中的具体应用及实现方法,为经济信息管理系统的开发应用提供一个优秀的全文检索解决方案(2|。

收稿日期:2006一07一17

基金项目:广西大学院校共管项目(x061002);广西自然科学基金项目(桂科基0575017);广西自然科学基金项目(桂科自0640026)

作者简介:蒙辉(1984一),男(毛南族),广西河池人,本科生,研究方向为数据库技术;陈燕,讲师,硕士,CCF会员,研究方向为汁算机网络。1Oracle全文检索

1.】检索原理

OracleText进行检索时,并不是直接检索文档原文,而是对于文本索引进行检索。所以快速查询大量文档的关键就在于建立起有效的文本信息索引。Ora—cleText使用反转索引(InvertedIndex)将文档拆分成一系列关键字,在索引中记录下所有的关键字和出现这些关键字的文档。这样对文档中的所有文字建立索引,实现全文检索进行检索时实际上是对文本索引的检索。因为索引本身就是一系列文字,并带有指向原始文档的指针,所以检索速度很快[3|。

OracleText是通过图1的体系架构来实现全文检索的。OracleText索引文档时所使用的主要逻辑步骤如下:?

(1)数据存储逻辑搜索表的所有行,并读取列中的数据。

(2)过滤器提取文档数据并将其转换为文本表示方式。

(3)分段器提取过滤器的输出信息,并将其转换为纯文本。

(4)词法分折器提取分段器中的纯文本,并将其拆

 

第4期蒙辉等:OracleText技术在复杂结构数据库中的应用?39?

分为不连续的标记。

(5)索引引擎提取词法分析器中的所有标记、文档段在分段器中的偏移量以及被称为非索引字的低信息含量字列表,并构建反向索引。Text实施全文检索的一般性的方法,而Oracle的全文检索却并不直接支持对结构不断变化的数据库实现全库敏感数据的全文检索。

对于数据库中表结构不断变化或者表字段不确定

图1OracleText的体系架构1.2OracleText全文检索的方法与步骤

要使用OracleText实现全文检索必须具有CTXAPP角色或者是crxsYs用户,并具有CREATEANYDIRECTORY权限。OracleText为系统管理员提供CFXSYS用户,为应用程序开发人员提供CTXAPP角色。使用OracleText实施全文检索的一般性方法为:建表并装载文本、配置索引首选项、创建索引、建立索引、发出查询和索引维护14J。

2Oracle全文检索在复杂结构数据库中的实现

2.1复杂数据库的设计

在研制过程,用ASP(ActiveServerPage)实现处理逻辑,用Oracle数据库存储大量、复杂数据的数据,为南宁经济信息中心开发了经济信息管理系统。该系统目前已经正式在南宁电子政务网上实施运行。由于经济信息管理系统中年鉴、月报、宏观数据等原始数据表格样式繁多,需要存放大量的各种表格式差异极大,并且表问数据关联极少,因此系统设计采用动态生成表结构。所有的数据表都在需要时由程序或触发器完成,具体建表的工作由用户完成,系统对用户建表的信息总体把握,并只提供友好、简单的界面。这样动态生成表可以很好地解决上述问题,并可以做到最大的灵活性,对经济信息管理系统中的各年的年鉴、月报、宏观经济和刊物数据等资料的存储均适用,并且方便数据的多样存储和查寻_5J。

2.2动态更新数据库实现全库检索原理

通常情况Oracle全文检索的应用只是对某些表的某些字段内容进行检索,以上介绍的只是使用Oracle

的数据库,要实现同步的全库检索是相当

困难的。对于这样的数据库,要实现全库检索就必须牺牲存储空间.建

立新的数据表保存全库数据,将所有敏感

数据全部连接为一个字符串,储存在一个

INF字段中,该表定义多主键,用以标识检

索数据的来源以及数据对应的关系。

定义全文检索表的主键:全文检索表(表ID,数据项ID,INF)。

实现动态更新数据库全文检索的关键技术问题主要有以下四个:

(1)动态建立数据库或动态建立数据表格后,如何实现向全文检索表中添加数据的同步操作。

(2)当某个表中某个数据项发生变化或者被修改后,如何实现全文检索表中的数据的同步。

(3)删除某数据项或者数据表格后如何同步全文检索表格中数据。

(4)如何实施OracleText全文检索表的优化。2.3具体实现过程以及问题解决方法

对于以上的四个实现过程中的关键技术问题,具体的解决方法如下:

(1)实现动态建立数据库或动态建立数据表格后向全文检索表中添加数据的同步必须在程序部分完成。在插人数据项或建立表格的时候同时向全文检索表中插入相应数据的过程由一个事务提交完成,以保证数据库完整性。例如,在数据库中动态创建了ID号为1000的一个表,并向该表中插入一行数据(见表1),则向全文检索表中插人的数据项如表2,插入过程在成事务,保证数据插入的新数据能被检索到。

表1插入过程(一)

表ID:1000

IDPAGENAM旺PAGEDA-rEPAGEINFO

0RACLE

5002006年×月×日××X××××全文检索

全文检索表

表2插入过程(二)

表m数据项IDINF

0RAaE全文检索,2006年1000500

×月×日,×××××××示例代码(ASP):

 

?40?计算机技术与发展第17卷

Setrsid=Server.CreateObiect(“AIX)DB.Recordset”)

、--%11=“SELECTID

FORM1000WHEREID=NULL”

mid.OPENSqL,con,l,3

V—ID=r8(“ID”)

RSid.CL』]SE

coiln.begintrarlS’建立一个新事务

Set1"3=Server.CreateObject(“ADODB.Recordset”)

sqll=“INSERTINTO1000(ID,PAGENAME,PAGEDATE,PAGEINFO)VALUSE(“&v—ID&”,“ORACLE全文检索”,“&GETNOW()&”,“××××××××”)”

sql2=“INSERl’1N7FO全文检索表(表ID,数据项ID,INF)VALUSE(“1000”,“&V—ID&”.“ORACLE全文检索。2006年x月X日.×××X×××X×”)”

rS.OPENsqll,Conn,1,3

rs.OPENsql2,Corm,1,3

ifoonn.Errors.Count>Othen’如果有错误

conn.RollbackTrans’回滚事务

else

corlrl.CommitTrans’提交事务

endif

(2)当某个表中某个数据项发生变化或者被修改后,仍然采用事务来实现数据项修改或变化的同步。

可以在建立每个表的时候书写一个修改触发器,实现在数据项被修改后向全文检索表中相应数据项同步更新。但是这样的方法有一定的弊端,因为触发器并不一定能保证遇到意外情况时候数据的完整性,例如服务器死机或者停电等,因此解决这个问题还是利用外部利用事务的提交来保证操作的同步完整性。在修改过程中,通过表ID以及数据项D可以定位到全文检索表中某个数据项,然后实施数据项的同步更新操作。

示例代码(ASP):

1201111.begintrans

SetrS=Server.CreateObject(“ADODB.Recordset”)

sqll===“UPDATE1000SET

PAGEINF=“XX?CXXXXX”WHEREID=需要修改的数据lD”

sql2=“LrPDATE全文检索表INF=“XXXXXXXX”WHERE表ID=1000AND数据项ID=需要修改的数据ID”

rS.OPENsqll,Corm,1,3

rsOPENsql2,Conn,1,3

ifConll.Errors.Count>0then’如果有错误

corm.P.ollbackTrfins’回滚事务

else

corlll.CommitTrans’提交事务

endif

(3)删除某数据项或者数据表格后利用触发器来完成。在删除数据项或表后触发,清理全文检索表数据。动态建立表的数据库中一般都会有个表存放动态建立起来的所有表的ID同其他数据的对应关系,当需要删除某个表的时候,这条数据同样会被清除掉。因此利用触发器来实现同步,在删除表ID数据后触发,查询全文检索表中表ID与被删除的表ID相同的记录,把查询到的记录同步删除。

触发器代码如下:

DECI。ARE

PRAGMAAUTONOMOUS—TRANSACFION;

BEGIN

DECI。ARE

SQLS"TRvarchar2(1000);

STRvarchar2(10):=OLD.表ID;

BEGIN

SQLSTR:=’DELETEFROM“全文检索表”WHERE表ID=‘1lSTRll’;

EⅪEa7TEIMMEDIATESQI_SWR;

E№:

END;

(4)如何实施OracleText全文检索表的优化。由于每次更新数据并不多,OracleText全文检索同步消耗资源并不多,因此在全文检索表中写一个触发器,设置为插入以及修改数据后触发,完成同步数据的任务。

触发器代码如下:

BEGIN

CXT—DDL.SYCN—INⅨⅨ(‘全文检索ID’);

END:

对于优化全文检索,设置在服务器比较闲的时候(如凌晨4点)启动对Oracle的查询数据进行优化。查询数据优化由一个存储过程来实施。

存储过程代码如下:

AS

BEGIN

CXT—DDL.OPTIMIZE—INDEX(‘全文检索ID’,‘FULL’,30);END;

设置存储过程在某个时间启动可以书写一个JOB来完成。

3结束语

全文检索技术是智能信息管理的关键技术之一,OracleText作为Oracle9i的一个组件,提供了强大的全文检索功能,用Oracle9i做后台数据库,就可以充分利用其全文检索技术,构建复杂的大型数据信息管理系统,使开发的应用系统具备强大的全文检索能力。

参考文献:

[1j董丽.Oracle数据库的备份与恢复[J].石油工业计算机

(下转第44页)

 

计算机技术与发展第17卷

●序列分析。

序列分析的侧重点是找出数据间的前后(因果)关系,并对序列的发展作出预测[8I。如果说关联分析(找出顾客在一次消费中具有关联性的商品)是横向的话,那么序列分析是纵向的,它是找出顾客(指会员顾客)在前后购买中具有关联性的商品,决策人员可据此制定出相应的营销策略。

●分类分析。

把连锁超市中的所有商品分为四类:畅销且单位赢利高的商品、畅销但单位赢利不高的商品、不畅销但单位赢利高的商品、不畅销且单位赢利不高的商品。看属于同一类别的商品具有什么特征,即“满足什么条件的商品属于上述四类中的哪一类”,形成规则。这些规则在对超市确定是否要采购某种新商品时,具有十分重要的参考价值。

另外还可对会员顾客的个人信息(如收入、婚否、性别、年龄、文化程度等)与他们所申请卡之间的关系进行挖掘,确定最可能选择某种类型卡的顾客的特征[9],从而提供相应类型的会员卡服务,最大程度上保证顾客的满意率与保有率。

上述两方面均采用基于信息熵的ID3决策树分类方法。

●预测分析:

预测分析主要是对商品价格、超市未来销售水平及利润水平的预测。商品价格的预测至关重要,它的准确与否直接影响到超市来年的利润预测,而超市未来销售水平及利润水平的准确预测为超市制定出合理的销售额、利润额指标及投资计划提供了依据[10],降低了经营风险。另外,根据OLAP对超市销售情况的分析以及DM对超市未来销售量的预测可决定出每种商品的合理库存量,最大程度上保证畅销商品不脱销、滞销商品不积压。

对某一数值的常用预测方法主要有时间序列分析法和回归分析法。时间序列分析法是用变量过去的值来预测该变量未来的值,这里对商品价格、超市未来销售水平的预测便采用这种方法;回归分析法是通过具有已知值的变量来预测其它变量的值,较简单的是线

(上接第40页)

应用,2005,13(4):64—67.

[2]王珊,陈红.数据库系统原理[M].北京:清华大学出版社,2002.

[3]谷震离.关系数据库查询优化方法研究[J].微计算机信息,2006,22(5):164—167.性回归方法,这里对超市未来利润水平的预测便采用此种方法。

3结束语

通过以上的研究与论述,文中在原有连锁超市联机业务管理信息系统的基础上,综合运用了DW,O一乙心,DM等新兴技术,开发了一个基于DW的连锁超市决策支持系统。利用DW存储和管理连锁超市中日益庞大的业务数据,利用OLAP从各个角度、各个层次对业务数据进行准确分析,并通过DM技术挖掘出深层次的信息知识,从而为超市决策者提供了许多高价值的决策信息,极大地增强了连锁超市的市场竞争力。实践证明,该系统投资少、速度快、性能稳定、操作简单,具有很强的实用性,取得了令人满意的效果。

参考文献:

[1]范丽霞,张雪兰.利用数据仓库与数据挖掘实现电信决策支持系统[J].计算机与现代化,2005(8):65—67.

[2]梅纲,冯珊,向震.数据仓库在决策支持系统中的应用[J].华中科技大学学报:自然科学版,2002,30(6):70—

72.

[3]王丽珍,周丽华,陈红梅.数据仓库与数据挖掘原理及应用[M].北京:科学出版社,2005.

[4]刘智,桑国明,张维石.一种基于DW+OLAP+DM的连锁销售决策支持系统模型[J].交通与计算机,2005,23(2):53—55.

[5]孙英华,马帅,张俊虎,等.基于WEB服务的移动网管决策支持系统[J].计算机工程与应用,2005,41(22):127—

131.

[6]刘智,桑国明,张维石.基于数据仓库连锁店决策支持系统模型的研究[J].计算机与数字工程,2005(8):22—24.[7]高洪深.决策支持系统(DSS):理论方法案例[M].北京:清华大学出版社,2005.

[8]孙永剑,李仁旺.基于数据挖掘的服装决策支持系统[J].计算机工程.2005,31(16):194—196.

[9]王晓红,高洪深.数据挖掘技术在大型超市中的应用研究[J].北方工业大学学报,2003,15(3):31—35.

[10]蒋国银,何跃.数据挖掘技术在销售分析系统中的应用[J].计算机应用研究,2004,21(4):163—167.

[4]张凡,田斌,周晶晶.Oracle9i中Java存储过程的应用[J].微机发展,2005.15(6):45—47.

[5]苏淑文,翁敬农.Oracle系统异构环境下的信息集成[J].微机发展,2004,14(10):1—3.

 

Oracle Text技术在复杂结构数据库中的应用

作者:蒙辉, 陈燕, MENG Hui, CHEN Yan

作者单位:广西大学,计算机与电子信息学院,广西,南宁,530004

刊名:

计算机技术与发展

英文刊名:COMPUTER TECHNOLOGY AND DEVELOPMENT

年,卷(期):2007,17(4)

引用次数:1次

参考文献(5条)

1.董丽.朱春红Oracle数据库的备份与恢复[期刊论文]-石油工业计算机应用 2005(4)

2.王珊.陈红数据库系统原理 2002

3.谷震离关系数据库查询优化方法研究[期刊论文]-微计算机信息 2006(15)

4.张凡.田斌.周晶晶Oracle9i中Java存储过程的应用[期刊论文]-微机发展 2005(6)

5.苏淑文.翁敬农Oracle系统异构环境下的信息集成[期刊论文]-微机发展 2004(10)

相似文献(0条)

引证文献(1条)

1.杨应全Oracle全文检索技术在高校图书馆的应用[期刊论文]-现代情报 2008(9)

本文链接:https://www.360docs.net/doc/c23508930.html,/Periodical_wjfz200704011.aspx

下载时间:2010年4月24日

相关文档
最新文档