快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记娱h188下载app:Oracle9i的全文检索技术(1)全文检索



择要 全文检索技巧是智能信息治理的关键技巧之一,Oracle Text作为Oracle9i的一个组件,供给了强大年夜的全文检索功能,用Oracle9i做后台数据库,就可以充分使用其全文检索技巧,构建繁杂的大年夜型文档治理系统。本文主要先容了Oracle Text的体系布局及其应用。

关键词 Oracle Text 全文检索

Oracle不停致力于全文检索技巧的钻研,当Oracle9i Rlease2宣布之时,Oracle数据库的全文检索技巧已经异常完美,Oracle Text使Oracle9i具备了强大年夜的文本检索能力和智能化的文本治理能力。Oracle Text是Oracle9i采纳的新名称,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8曩昔它的名称是Oracle ConText Cartridge。应用Oracle9i和Oracle Text,可以方便而有效地使用标准的SQL对象来构建基于文本的新的开拓对象或对现有利用法度榜样进行扩展。利用法度榜样开拓职员可以在任何应用文本的Oracle数据库利用法度榜样中充分使用Oracle Text搜索,利用范围可所以现有利用法度榜样中可搜索的注释字段,也可是实现涉及多种文档款式和繁杂搜索标准的大年夜型文档治理系统。Oracle Text支持Oracle数据库所支持的大年夜多半说话的基础全文搜索功能。本文将先容若何应用Oracle9和记娱h188下载appi的全文检索技巧来为自己的利用供给一个优秀的办理规划。

1 Oracle Text的体系架构

下图是Oracle Text的体系架构。

图1 Oracle Text的体系架构

以上面的体系架构图为根基,Oracle Text 索引文档时所应用的主要逻辑步骤如下:

(1)数据存储逻辑搜索表的所有行,并读取列中的数据。平日,这只是列数据,但有些数据存储应用列数据作为文档数据的指针。例如,URL_DATASTORE 将列数据作为 URL 应用。

(2)过滤器提取文档数据并将其转换为文本表示要领。存储二进制文档 (如 Word 或 Acrobat 文件) 时必要这样做。过滤器的输出不必是纯文本款式 -- 它可所以 XML 或 HTML 之类的文本款式。

(3)分段器提取过滤器的输出信息,并将其转换为纯文本。包括 XML 和 HTML 在内的不合文本款式有不合的分段器。转换为纯文本涉及检测紧张文档段标记、移去弗成见的信息和文本从新款式化。

(4)词法阐发器提取分段器中的纯文本,并将其拆分为不继续的标记。既存在空缺字符分隔说话应用的词法阐发器,也存在分段繁杂的亚洲说话应用的专门词法阐发器。

(5)索引引擎提取词法阐发器中的所有标记、文档段在分段器中的偏移量以及被称为非索引字的低信息含量字列表,并构建反向索引。倒排索引存储标记和含有这些标记的文档。

2 简单的示例

这里先给出一个简单示例说使用Oracle Text实现全文检索的措施与步骤,在后面在进行详细的阐明。Orcale9i供给了Oracle Text Manager可以简化许多事情,所有在Oracle Text Manager中完成的事情,都可以在经由过程PL/SQL来实现。要应用Oracle Text,必须具有CTXAPP角色或者是CTXSYS用户。Oracle Text为系统治理员供给CTXSYS用户,为利用法度榜样开拓职员供给CTXAPP角色。

CTXSYS用户可履行以下义务:启动Oracle Text办事器,履行CTXAPP角色的所有义务。

具有CTXAPP角色的用户可履行以下义务: 创建索引,治理 Oracle Text 数据字典,包括创建和删除首选项,进行Oracle Text 查询,应用 Oracle Text PL/SQL法度榜样包。

应用Oracle Text的步骤:

(1)创建表来保存某些文档。该示例应用一个主关键字列来标识每个文档,应用和记娱h188下载app一个小的VARCHAR2列来保存每个文档。

关于文档款式,由于系统能为包括HTML、PDF、Microsoft Word和纯文本在内的大年夜多半文档款式建立索引,可以将此中的任何文档类型装载到文本列中(在"过滤器"选项中设置)。有关所支持的文档款式的具体信息,可以参阅Oracle Text User's Guide and Reference 中的附录"Supported Filter Formats"。

装载措檀越要有以下几种:

(1)SQL INSERT 语句

(2)ctxload 可履行文件

(3)SQL*Loader

(4)从 BFILE 中装载 LOB 的 DBMS_LOB.LOADFROMFILE() PL/SQL 历程

(5)Oracle Call Interface

4 为文本建立索引

文本装入文本列后,就可以创建Oracle Text索引。文档以许多不合规划、款式和说话存储。是以,每个 Oracle Text 索引有许多必要设置的选项,以针对特定环境设置设置设备摆设摆设索引和记娱h188下载app。创建索引时,Oracle Text可应用多少个默认值,但在大年夜多半环境下要求用户经由过程指定首选项来设置设置设备摆设摆设索引。

每个索引的许多选项构成功能组,称为"类",每个类集中表现设置设置设备摆设摆设的某一方面,可以觉得这些类便是与文档数据库有关的一些问题。例如:数据存储、过滤器、词法阐发器、相关词表、存储等。

每个类具有许多预定义的行径,称之为工具。每个工具是类问题可能具有的谜底,并且大年夜多半工具都包孕有属性。经由过程属性来定制工具,从而使对索引的设置设置设备摆设摆设加倍多变以适应于不合的利用。

(1)存储(Storage)类

存储类指定构成Oracle Text索引的数据库表和索引的表空间参数和创建参数。它仅有一个基础工具:BASIC_STORAGE,其属性包括:I_Index_Clause、I_Table_Clause、K_Table_Clause、N_Table_Clause、P_Table_Clause、R_Table_Clause。

(2)数据存储(Datastore)类

(7)过滤器(Filter)类

过滤器确定若何过滤文本以建和记娱h188下载app立索引。可以应用过滤器对翰墨处置惩罚器处置惩罚的文档、款式化的文档、纯文本和 HTML 文档建立索引,包括5个基础工具:CHARSET_FILTER、INSO_FILTER INSO、NULL_FILTER、PROCEDURE_FILTER、USER_FILTER。

(8)非索引字表(Stoplist)类

非索引字表类是用以指定一组不编入索引的单词 (称为非索引字)。有两个基础工具:BASIC_STOPLIST (一种说话中的所有非索引字) 、 MULTI_STOPLIST (包孕多种说话中的非索引字的多说话非索引字表)。

5 查询

建立了索引,就可以应用 SELECT 语句中的 CONTAINS 运算符发出文本查询。应用 CONTAINS 可以进行两种查询:单词查询和ABOUT查询。

5.1 词查询示例

词查询是对输入到 CONTAINS 运算符中单引号间的正确单词或短语的查询。在以下示例中,我们将查找文本列中包孕 oracle 一词的所有文档。每行的分值由应用标签 1 的 SCORE 运算符选定:

SELECT SCORE(1) title from news WHERE CONTAINS(text, 'oracle', 1) > 0;

在查询表达式中,可以应用 AND 和 OR 等文本运算符来获取不合结果。还可以将布局性谓词添加到 WHERE 子句中。可以应用 count(*)、CTX_QUERY.COUNT_HITS 或 CTX_QUERY.EXPLAIN 来谋略查询的射中 (匹配) 数目。

5.2 ABOUT查询示例

在所有说话中,ABOUT查询增添了某查询所返回的相关文档的数目。在英语中,ABOUT 查询可以应用索引的主题词组件,该组件在默认环境下创建。这样,运算符将根据查询的观点返回文档,而不是仅依据所指定的正确单词或短语。例如,以下查询将查找文本列中关于主题 politics 的所有文档,而不是仅包孕 politics 一词的文档:

同步(sync):将新的term 保存到I表;

优化(optimize):清除I表的垃圾,主如果将已经被删除的term从I表删除。

Oracle供给了一个所谓的ctx server来做这个同步和优化的事情,只必要在后台运行这个进程,它会监视数据的变更,及时进行同步。别的,也可以用以下的job来完成(该job要建在和表同一个用户下):

create和记娱h188下载app or replace procedure sync

is

begin

execute immediate

'alter index myindex rebuild online' ||

' parameters ( ''sync'' )' ;

execute immediate

'alter index myindex rebuild online' ||

' parameters ( ''optimize full maxtime unlimited'' )' ;

end sync;

/

Set ServerOutput on

declare

v_job number;

begin

Dbms_Job.Submit

(

job => v_job,

what => 'sync;',

next_date => sysdate, /* default */

interval => 'sysdate + 1/720' /* = 1 day / ( 24 hrs * 30 min) = 2 mins */

);

Dbms_Job.Run ( v_job );

Dbms_Output.Put_Line ( 'Submitted as job # ' || to_char ( v_job ) );

end;

/

job的SYSDATE + (1/720)是指每隔2分钟同步一次。详细的光阴距离,可以根据自己的利用的必要而定。

8 小结

文本对付各类规模的公司、机构组织来说,都是包孕浩繁富厚信息的最有效载体,Oracle Text的推出,标志着Oracle供给了一套崭新的技巧,可以便捷安然的用于治理企业的文本信息。Oracle Text使利用法度榜样开拓者可以透明地将全文检索能力加入到基于SQL的利用法度榜样中,Oracle Text也是其他Oracle产品的核心组件,比如Oracle9iAS Portal,Oracle eBusiness Suite,Oracle Ultra Search和Oracle Internet File System等。机动运用Oracle Text供给的全文检索技巧,就可以使自己的利器具备强大年夜的全文检索能力。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: