- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
(Oracle管理)oracle全
文检索
oracle全文检索
Oracle一直致力于全文检索技术的研究,当Oracle9iRlease2发布之时,Oracle数据库的
全文检索技术已经非常完美,OracleText使Oracle9i具备了强大的文本检索能力和智能化
的文本管理能力。OracleText是Oracle9i采用的新名称,在Oracle8/8i中它被称作
OracleinterMediaText,在Oracle8以前它的名称是OracleConTextCartridge。使用
Oracle9i和OracleText,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开
发工具或对现有应用程序进行扩展。应用程序开发人员可以在任何使用文本的Oracle数据
库应用程序中充分利用OracleText搜索,应用范围可以是现有应用程序中可搜索的注释字
段,也可是实现涉及多种文档格式和复杂搜索标准的大型文档管理系统。OracleText支持
Oracle数据库所支持的大多数语言的基本全文搜索功能。本文将介绍如何使用Oracle9i的
全文检索技术来为自己的应用提供一个优秀的解决方案。
1OracleText的体系架构
下图是OracleText的体系架构。
图1OracleText的体系架构
以上面的体系架构图为基础,OracleText索引文档时所使用的主要逻辑步骤如下:
(1)数据存储逻辑搜索表的所有行,并读取列中的数据。通常,这只是列数据,但有些数
据存储使用列数据作为文档数据的指针。例如,URL_DATASTORE将列数据作为URL使用。
(2)过滤器提取文档数据并将其转换为文本表示方式。存储二进制文档(如Word或Acrobat
文件)时需要这样做。过滤器的输出不必是纯文本格式--它可以是XML或HTML之类的文本格
式。
(3)分段器提取过滤器的输出信息,并将其转换为纯文本。包括XML和HTML在内的不同文
本格式有不同的分段器。转换为纯文本涉及检测重要文档段标记、移去不可见的信息和文本
重新格式化。
(4)词法分析器提取分段器中的纯文本,并将其拆分为不连续的标记。既存在空白字符分
隔语言使用的词法分析器,也存在分段复杂的亚洲语言使用的专门词法分析器。
(5)索引引擎提取词法分析器中的所有标记、文档段在分段器中的偏移量以及被称为非索
引字的低信息含量字列表,并构建反向索引。倒排索引存储标记和含有这些标记的文档。
2简单的示例
这里先给出一个简单示例说利用OracleText实现全文检索的方法与步骤,在后面在进行具
体的说明。Orcale9i提供了OracleTextManager可以简化许多工作,所有在
OracleTextManager中完成的工作,都可以在通过PL/SQL来实现。要使用OracleText,必
须具有CTXAPP角色或者是CTXSYS用户。OracleText为系统管理员提供CTXSYS用户,为应
用程序开发人员提供CTXAPP角色。
CTXSYS用户可执行以下任务:启动OracleText服务器,执行CTXAPP角色的所有任务。
具有CTXAPP角色的用户可执行以下任务:创建索引,管理OracleText数据字典,包括创建
和删除首选项,进行OracleText查询,使用OracleTextPL/SQL程序包。
使用OracleText的步骤:
(1)创建表来保存某些文档。该示例使用一个主关键字列来标识每个文档,使用一个小的
VARCHAR2列来保存每个文档。
CREATETABLEdocs(idNUMBERPRIMARYKEY,textVACHAR2(80));
(2)将两个示例文档置入该表:
INSERTINTOdocsVALUES(1,thefirstdoc);
INSERTINTOdocsVALUES(2,theseconddoc);
COMMIT;
(3)使用OracleTextManager来创建和修改首选项,首选项将与索引相关联。
(4)使用OracleTextManager创建文本索引。另外,可以输入以下使用默认首选项的SQL
语句:
CREATEINDEXdoc_indexONdocs(text)INDEXTYPEISCTXSYS.CONTEXT;
(5)使用CONTAINS函数,发出
文档评论(0)