基于WEB的IETM全文检索设计与实现
1 引言
交互式电子技术手册(Interactive Electronic Technical Manual,IETM)出现于20世纪90年代,目前在美国等许多发达国家所推行的CALS(持续采办与周期保障或光速商务)战略中效果最显著,应用最广泛。CALS的含义是指对武器装备实施全寿命管理和信息支持,即在武器系统的采购采办-研制-设计-生产-验收-交付-培训-维护的全寿命过程中,利用计算机网络、数据库、多媒体、数字仿真等先进信息技术,对武器装备和工程的技术信息数据实施数字化、标准化、网络集成化,提高信息数据的共享性和可再利用性。
交互式电子技术手册简单地讲就是技术手册的数字化,它将技术手册的内容以数字化的格式储存,并以交互方式进行查询,让使用者随时快速、方便地得到所需的信息(如文字、表格、图形、图像、声音等),从而提高武器装备保障能力和战备能力。
随着技术的不断发展,IETM与Internet技术相结合,基于WEB的交互式电子技术手册采用先进的B/S模式通过Internet或Intranet发布、更新和获取信息,具有广阔的应用前景。
交互式电子技术手册中必须具有交互式全文检索的功能。使用者输入所要查询的文字,就可以找到相关的资料。本文就基于WEB的交互式电子技术手册全文检索技术进行了研究,并利用Oracle Text技术实现交互式电子技术手册全文检索功能。
2 OracleText
OracleText全文检索技术是Oracle数据库管理系统的一部分。它使用标准的SQL语言进行索引、查找、分析储存在Oracle数据库、文件或网络中的文本及文档,它可以进行文档的语言分析,采用多种检索方法,包括关键词查找、上下文查找、布尔操作、模式匹配、混合主题查询、HTML/XML节查找等方法。同时可以对检索结果进行多种格式化操作,如对检索关键字高亮显示等。
OracleText管理文本及进行全文检索的系统框图如图1所示,OracleText索引的对象可以是存放在数据库内部的1个表或者操作系统下的1个文件甚至是互联网上的1个URL。过滤器用于提取Word,Excel,AdobePDF等文档中的数据并将其转换为文本方式(可以XML或HTTP格式),OracleText提供的过滤器支持多达150种以上的文件格式,开发人员也可以编写属于自己的过滤器。分节器则用于标示并区分文本段,从分节器输出的文本段由词法分析器进一步分解为单词或词组,并去掉其中的噪音词。最后,索引引擎为文档中出现的所有词或标记构建反向索引(倒排表)以备将来查询时使用。
3 全文检索流程设计
基于WEB的交互式电子技术手册全文检索的流程如图2所示。
某电子装备交互式电子技术手册中说明书包括技术条件、技术说明书、使用维修说明书、调试手册、维修手册、安装手册等。
按所属设备类型将所有说明书资料都按HTML格式保存在Web服务器网站发布目录下,在设备表中记录其说明书文件路径,查询时根据说明书文件路径将设备的说明书信息保存到数据库中。
4 数据库设计
在交互式电子技术手册中为了帮助用户快速方便查询所需装备资料,在数据库设计过程中按装备类型及所属专业分类,装备说明书按树型结构设计,不同设备的资料存放在不同的路径下。其数据逻辑结构如图3所示。
说明书表的属性包括总体、技术、使用、调试和维修,标题级别用于标题的层次分类,同一层的标题属于同一级别,相对路径名表示含有文件名这个属性的表或视图中的文件的相对路径。
5 全文检索实现步骤
(1)创建表来保存说明书表文档。使用一个主关键字列来标识每个文档序号,使用一个小的VARCHAR2列来保存每个文档文件名。
create table markup(id number primary key,text varchar(80));
然后将设备型号为equipment_type,属性为key的文档数据插入表中
insert into markup(select序号,文件名from说明书表where所属设备型号=equipment_type1 and属性=key)
(2)设置中文词法分析器和分词列表的分词方式
ctx_Dd.l Create_Preference('chinese_imiss','CHINESE_VGRAM_LEXER');
数据存储模块采用本地文件系统存储模式
ctx_dd.lcreate_preference('imiss_DIR','FILE_DATASTORE');
由于不同的装备的文档分别放在不同的文件路径下,因此在Jsp中通过调用存储过程来设置分词列表的分词方式
Callable Statementcstmt=
conn.prepare Call("
{call ctx_dd.l set_attribute(?,?,?)}");
cstm.tset String(1,"imiss_dir");
cstm.tset String(2,"path");
cstm.tset String(3,absolute_path);
/*absolute_path为存放设备说明书的绝对路径名
*/
cstm.texecute();
(3)使用ORACLETEXT创建文本索引
create or replace procedure im is sindex
as
begin
execute immediate'drop
index markup_text';
execute immediate'create index
markup_textonmarkup(text)
index type is ctxsys.context
parameters(''
data store im iss_DIR LEXER
CHINESE_im iss filter
ctxsys.null_filter section group
ctxsys.html_section_group'')';
end;
(4)使用contains函数,发出基于内容的文档查询。查询结果存放在表markup_explain
insert in to markup_explain(
select markup_id from markup where
contains(text,'"+data+"',1)>0)";
(5)查询结果的高亮度显示
create or replace procedure im iss markup(
str1 in varchar2,str1 in varchar2,x in number)is
begin
execute immediate 'truncate table
ctx_mutab';
Ctx_Doc.Set_Key_Type(
Ctx_Doc.Type_Primary_Key);
Ctx_Doc.Markup(
index_name=>'markup_text',
/*数据库表中与包含文档的文本列项关联的索引的名字*/
textkey=>str1,
/*文档的唯一标识符*/
text_query=>str2,
/*用于检索文本的查询表达式*/
re stab=>'ctx_mutab',
/*查询结果的高亮度显示的文本保存的表*/
query_id=>x,
plaintext=>false,
/*表示产生标记文档的HTML版本*/
starttag=>'<A NAME=ctx%CURNUM>
<FONT COLOR=RED><B>',
endtag=>'</B></FONT></A>',
prevtag=>'<A HREF=
#ctx%PREVNUM>&l;t</A>',
nexttag=>'<A HREF=
#ctx%NEXTNUM>></A>'
);
end;
6 结束语
运用OracleText提供的全文检索技术来实现交互式电子技术手册全文检索的功能是一种切实可行的方法,并在某电子装备交互式维修信息支持系统的具体应用中得到用户的肯定。