Oracle9i数据库的全文检索技术开发网络数据库 浏览:900

Oracle课程被看着是Oracle9i数据库的全文检索技术开发网络数据库。
简介:精细,巧妙的工作。大师和新手之间的区别是,大师知道一切,新手知道一些。计算机技能收集新把戏的优点,让你很容易掌握踏上道路。

全文检索技术是智能信息管理的关键技术,Oracle Text作为Oracle9i的一个组件,提供了一个强大的全文搜索功能,以Oracle9i做后台数据库,你可以充分利用全文检索技术,大型复杂的文档管理系统的构建。本文主要介绍建筑使用Oracle Text。

关键词:全文检索

Oracle一直致力于全文检索技术的研究。在Oracle9i rlease2发布,Oracle数据库的全文检索技术已经很完美。Oracle Text了Oracle9i有强大的文本检索能力和智能文本管理能力。Oracle Text采用Oracle9i新名称。在Oracle8 / 8i中,它被称为Oracle interMedia Text。在Oracle,它的名字是Oracle上下文墨盒。采用Oracle9i和Oracle文本可以使用标准的SQL工具方便、有效的基于文本或扩展现有的应用程序,建立新的开发工具,应用程序开发人员可以使用Oracle Text数据库应用程序充分利用Oracle文本搜索,可以在现有的应用范围应用注释字段可以搜索,还可以实现大文件管理系统涉及的各种文档格式和复杂的搜索条件。Oracle Text支持大多数语言的Oracle数据库支持基本的全文搜索功能。本文将介绍如何使用Oracle9i的全文检索技术提供应用程序的优秀解决方案。
U3000
1甲骨文建筑

下图是Oracle文本的体系结构。

图1 Oracle文本的体系结构

基于上面的体系结构图,Oracle文本用于索引文档的主要逻辑步骤如下:

(1)数据存储逻辑检索表的所有行和列中的数据的读取。一般来说,这只是列数据,但有些数据存储使用列数据为一个指向文件数据。例如,url_datastore使用列数据作为URL。

(2)滤波抽取文档数据并将其转换为文本表示。需要存储二进制文件,如Word或Acrobat文件。一个滤波器的输出不能纯文本格式也可以是文本格式,如XML或HTML。

(3)分割设备提取滤波器的输出信息并将其转换成纯文本。文本格式不同,包括XML和HTML,有不同的部分。转换为纯文本涉及到检测的重要文档片段的标记,除无形的信息,和格式化文本。

(4)词法分析器提取分段设备中的纯文本,并将其划分为不连续标记,不仅有空白字符分割语言使用的词法分析器,也有用于亚洲语言的分段复杂词法分析器。

(5)索引引擎提取词法分析器中的所有标记、分割设备中文档段的偏移量和低信息内容词名为非索引词的列表,并构造反向索引、反向索引存储标记和包含这些标记的文档。




{分页}
2个简单的例子

这里是一个简单的例子,如何使用Oracle Text实现全文检索的方法和步骤,在具体的description.orcale9i背面提供了一个Oracle文本管理器,可以简化很多工作,在Oracle Text经理所做的一切工作都可以通过PL / sql.to使用Oracle文本实现的,你必须有一个ctxapp角色或应该使用用户。Oracle文本应该使用用户提供的系统管理员为应用程序开发人员提供ctxapp角色。

应该使用用户可以执行以下任务:启动Oracle文本服务器并执行所有任务的ctxapp作用。
与ctxapp角色的用户可以执行以下任务:创建索引,文本管理Oracle数据字典,包括创建和删除选项,Oracle查询的文本,文本的PL / SQL Oracle应用程序包。

使用Oracle文本的步骤:

(1)创建一个表来保存一些文件。这个例子使用一个主键列来确定每个文件,并使用一个小的VARCHAR2列保存每个文档。

创建表文件(编号主键,文本vachar2(80));

(2)这两个样本文件放在表格中:

插入到文档值(1,第一个文档);
插入到文档值(2,第二个文档);
承诺;

(3)使用Oracle文本管理器创建和修改第一个选项,并且首选项与索引相关联。

(4)使用Oracle文本管理器创建一个文本索引。此外,您可以使用默认的第一个选项输入以下SQL语句:

创建文档的索引的索引类型是ctxsys.context doc_index(文本);

(5)使用包含函数发送基于内容的文档查询:

选择ID从文档里(文本,'all')> 0;

这将找到包含第一个单词(即文档1)的文本列文档中的所有行。语句中的> 0部分对于有效的SQL SQL是必需的,而Oracle SQL不支持函数的布尔返回值。

以上只是一个简单的例子,目的是在使用Oracle全文建立全文索引时给出一个完整的步骤:

(1)构建一个表并加载文本(包括需要检索的文本字段)

(2)配置索引

(3)指标的建立

(4)发出查询

(5)索引维护:同步和优化(稍后将介绍)

3文本加载

实现文本的文本检索必须采取正确的文本加载到数据库表中,默认的行为指标要求将加载的文档中的文本列,虽然可以使用其他方法(包括文件系统和URL的文件存储(形式)是建立在数据存储选项)。默认情况下,该系统应在列文本文件加载。文本列可以VARCHAR2,BLOB,CLOB,CHAR,或已。注意,只有当面对系统移植到Oracle可以支持存储文本相对的两列类型,长长的原料。指标不能被索引的列类型NCLOB、日期、数量。

关于文档格式,因为系统可以索引大多数文档格式,包括HTML、PDF、微软Word和纯文本,并将任何文档类型加载到文本列(设置为筛选器选项)。有关支持文档格式的详细信息,请参阅Oracle文本用户指南和参考中的附录支持的筛选器格式。

加载的主要方法如下:

(1)sql插入语句

(2)ctxload可执行文件

(3)SQL *加载程序

(4)的dbms_lob.loadfromfile()从已加载LOB PL / SQL过程

(5)oracle调用接口





{分页}
4建立文本索引

在文字被装入一个文本列,Oracle文本索引可以创建文件都存储在许多不同的格式,格式和语言。因此,每个Oracle文本索引有许多需要设置的指标对于一个特定的情况下的选择。在创建索引的时候,Oracle Text可以使用多个默认值,但在大多数情况下,用户必须通过指定的喜好配置索引。

每个索引的许多选项形成函数组,称为类。每一个类都体现了配置的某些方面,可以看作是与文档数据库有关的一些问题,如数据存储、过滤、词法分析器、相关词库、存储等。

每个类都有一些预定义的行为,称为对象。每个对象都是类问题可能存在的答案,并且大多数对象都包含属性。对象是通过属性定制的,因此索引的配置更是{ 1 } { 2 } { 3 }。Oracle教程的下一页:Oracle9i数据库的全文检索技术开发网络Oracle。多变以适应不同的应用。

(1)存储(存储)类

存储类指定表空间参数和数据库的表和索引,构成Oracle文本索引的创建参数。它只有一个基本对象:basic_storage,其属性包括i_index_clause,i_table_clause,k_table_clause,n_table_clause,p_table_clause和r_table_clause。

(2)数据存储(数据存储)类

数据存储:对列中存储的文本的位置和其他信息。默认情况下,文本直接存储在列,表中的每一行代表一个完整的文件。其他数据存储单元包括一个网页,存储在一个单独的文件或URL的七确定。基本对象包括default_datastore,detail_datastore,direct_datastore,file_datastore,multi_column_datastore,url_datastore和user_datastore。

(3)文档段组(组组)类

一个文档片段是一个用于指定一组文档段对象。文档片段必须首先定义,然后指数可以查询文件中的段使用在操作。文档片段定义为文档段组的一部分。它包含七个基本目标:auto_section_group,basic_section_group,html_section_group,news_section_group,null_section_group,xml_section_group和path_section_group。

(4)相关词列表(表)类

相关词汇标识符用于指数干和模糊匹配查询选项的语言,只有一个基本对象的basic_wordlist,其特点是:fuzzy_match,fuzzy_numresults,fuzzy_score,Stemmer,substring_index,wildcard_maxterms,prefix_index,prefix_max_length,prefix_min_length。

(5)索引集(索引集)

指标集是集合的一个或多个Oracle索引(非Oracle文本索引),这是用于创建ctxcat型Oracle文本索引。只有一个基本的对象basic_index_set。

(6)词法分析器(Lexer)类

词法分析器类标识文本所用的语言,也决定了如何识别文本中的标记。默认的词法分析器是英语或其他西方欧洲语言,有空间,标准的标点符号,和非字母数字字符,而禁用的大小和案例。它包含8个基本目标:basic_lexer,chinese_lexer,chinese_vgram_lexer,japanese_lexer,japanese_vgram_lexer,korean_lexer,korean__morph_词法和multi_lexer。

(7)过滤器(过滤器)类

过滤器决定如何过滤文本建立索引。过滤器可以用于索引文件的文字处理器,处理格式的文件,纯文本和HTML文件,包括5个基本目标:charset_filter,inso_filter Inso,null_filter,procedure_filter和user_filter。

(8)停用词表(停用词表)类

Stoplist class is used to specify a set of non indexed words (called stopwords).There are two basic objects: BASIC_STOPLIST (all non indexed words in a language), MULTI_STOPLIST (multi language contains non index word in many languages of the stoplist).

5查询

建立索引和查询的文本可以被发送在选择statement.contains使用包含运算符可以用于两种查询:查询和查询词。

5.1字查询示例

单词查询是对包含操作符的单引号中的确切单词或短语的查询。在下面的示例中,我们将查找包含在文本列中的Oracle单词的所有文档。每行的值由评分运算符使用标签1选择:

选择评分(1)标题新闻,包含(文字,'oracle ',1)> 0;

在查询表达式中,可以使用文本运算符等或得到不同的结果。您还可以添加WHERE子句谓词的结构。你可以使用计数(*),ctx_query.count_hits,或ctx_query.explain计算点击次数(比赛)的查询。

5.2关于查询示例

在所有的语言中,关于查询增加相关文献数量查询所返回的。英语中的查询可以使用索引的主题词的组成部分,它是默认创建的。这样,该操作符返回基于查询的概念文档,而不是确切的词或短语的规定。例如,下面的查询将在关于主题的政治文本栏中找到所有的文件,而不是仅包含政治一词的文档:

选择评分(1)标题新闻,包含(文字,(政治),1)> 0;



{分页}



6显示满足查询条件的文档。

在一般情况下,通过使用Oracle文本查询的应用,用户可以查看文档通过查询。用户从列表中选择打文档,和应用程序显示文件的某种形式,文档可以通过Oracle文本不同的方式再现。例如,你可以通过突出一个查询词显示文档。突出显示的查询词可以在相关词查询的话,或主题词在英语查询。

以下是关于输出效果和每个输出效果的过程的信息:

文件强调,纯文本格式的版本(ctx_doc。标记)

文件强调,HTML版本(ctx_doc。标记)

偏移信息(ctx_doc。突出),突出的纯文本格式的版本

偏移信息(ctx_doc。突出强调HTML版本)

纯文本格式的版本,没有突出显示(ctx_doc。过滤)

HTML版本的文档,没有突出显示(ctx_doc。过滤)

7索引维护

如果表中的数据更改了,比如添加或修改记录,该索引怎么构建因为任何DML语句时,表不会自动修改索引,必须同步(同步)和优化(优化)指标正确地反映数据的变化。
建成后的索引,您可以检查Oracle自动生成以下表的用户:(假定指数为myindex):
博士myindex美元美元美元美元myindex K我,博士,博士myindex美元美元美元美元myindex博士R,N

使用最重要的i表,您可以查询表:

选择token_text博士,从myindex美元美元我哪里rownum <= 20 token_count;

这里省略了查询结果,可以看出存储在表中的Oracle实际上是对文档的分析。这项记录是在这里产生,包括位置、时间和期限的散列值。当文件内容的变化,你可以想象,我的表的内容也应发生相应的变化,为了保证甲骨文正确检索的内容做全文搜索的时候,因为所谓的全文检索核心是查询表。因此如何维护表的内容并没有重建索引每一次使用的数据的变化,这是用于同步优化。

同步(同步):将新项保存到i表;

优化(优化):从i表中删除垃圾主要是从i表中删除已删除的项。

Oracle提供了一个所谓的CTX服务器来完成这个同步和优化工作。它只需要在后台运行这个过程。它将监视数据的变化并及时进行同步:
创建或替换过程同步

开始
立即执行
改变指数myindex重建在线| |
参数(''sync ')';
立即执行
改变指数myindex重建在线| |
参数(''optimize全最大时限无限);
端同步;
/
下一页,在下一页上看到{ 1 } { 2 } { 3 }下一页是Oracle9i数据库的全文检索技术开发网络数据库。
进行设置
声明
v_job数;
开始
dbms_job.submit

工作= > v_job,
什么= > 'sync;,
next_date = SYSDATE,默认 / * * /
区间= 'sysdate + 1 / 720 /天= 1 /(24小时×30分钟= 2分钟)。
);
dbms_job.run(v_job);
dbms_output.put_line('submitted工作#| | to_char(v_job));
结束;
>
的系统日期+(1 / 720)的工作是同步的每2分钟。特定的时间间隔可以根据自己的应用需求来确定。

8总结

文本是各类企业和组织机构最有效的载体,包含着丰富的信息。Oracle文本的推出表明,Oracle提供了一种全新的技术,它可以用来管理方便、安全企业的文本信息,Oracle Text使应用程序开发者可以透明的全文搜索功能,为基于SQL的应用程序,文字和甲骨文Oracle产品等核心部件,如Oracle9iAS Portal,Oracle电子商务套件,Oracle Ultra和搜索互联网文件系统。通过Oracle Text提供全文检索技术的灵活运用可以使自己强大的全文检索能力中的应用。
上一页

{ { 1 } { 2 } { 3 }的最后一页
推荐文章1
广告