Oracle Text简介

发布时间:2020-08-07 12:45:14 作者:q499311546
来源:ITPUB博客 阅读:165
Oracle Text为查询应用程序和文档分类应用程序中的文本提供索引,单词和主题搜索以及查看功能。
要设计Oracle Text应用程序,首先确定期望运行的查询类型。 知道类型后,就可以为任务选择最合适的索引。
Oracle Text用于以下类别的应用程序:
1.文档集合应用程序
文本查询应用程序使用户可以搜索文档集合,例如网站,数字图书馆或文档仓库。
1.1关于 文档集合应用集合
该集合通常是静态的,并且在初始索引运行之后,内容没有明显变化。 文档可以是任何大小和格式,例如HTML,PDF或Microsoft Word。 这些文档存储在文档表中。 通过首先为文档集合建立索引来启用搜索。
查询通常由单词或短语组成。 应用程序用户使用OR和AND等运算符指定单词和短语的逻辑组合。 用户可以应用其他查询操作来改善搜索结果,例如词干,邻近搜索和通配符。
对于这种类型的应用程序,应该检索与查询最相关的文档。 文档必须在结果列表中排在高位。
查询最好与文档表上的CONTEXT索引一起使用。 为了查询该索引,应用程序在SELECT语句的WHERE子句中使用SQL CONTAINS运算符。

Oracle Text简介

1.2文本查询应用程序流程图
文档集合上的典型文本查询应用程序使用户可以输入查询。 该应用程序输入CONTAINS查询,并返回满足查询条件的文档列表(称为命中列表)。 结果通常按相关性排名。 该应用程序使用户可以查看命中列表中的一个或多个文档。
例如,一个应用程序可能会索引Web上的URL(HTML文件)并在整个索引URL中提供查询功能。 查询应用程序返回的命中列表由用户可以访问的URL组成。

下图展示了用户与简单文本查询应用程序进行交互的流程图:

Oracle Text简介

2.目录信息应用程序
目录信息由库存类型信息组成,例如在线书店或拍卖网站。

2.1关于目录信息应用程序

存储的目录信息由文本信息(例如书名)和相关结构化信息(例如价格)组成。 通常会定期更新信息,以使在线目录与库存保持最新。
查询通常是文本组件和结构化组件的组合。 结果几乎总是按结构化组成部分排序,例如日期或价格。 良好的响应时间始终是此类查询应用程序的重要因素。
CTXCAT索引可以最好地服务Catalog应用程序。 在SELECT语句的WHERE子句中使用CATSEARCH运算符查询此索引。

Oracle Text简介

2.2目录查询应用程序流程图
目录应用程序使用户可以搜索目录中的特定项目。 例如,在线商店应用程序使用户可以搜索和购买库存中的物品。 通常,用户查询由一个文本组件组成,该组件在文本描述以及一些其他订购条件(例如价格或日期)中进行搜索。
下图说明了在线电子商店的目录查询应用程序的流程图:

Oracle Text简介

3.文档分类应用程序
在文档分类应用程序中,将输入流或一组文档与一组预定义规则进行比较。 如果文档符合一个或多个规则,则应用程序将执行一项操作。
例如,假设有新闻报道传入。 定义一个规则来表示“财务”类别。 该规则本质上是一个或多个查询,用于选择有关财务主题的文档。 该规则可能具有“股票或债券或收益”的形式。
当文档到达华尔街收入预测并满足该类别的规则时,应用程序将采取措施,例如将文档标记为财务或向一个或多个用户发送电子邮件。
要创建文档分类应用程序,请创建一个规则表,然后创建一个CTXRULE索引。 要对输入的文本流进行分类,请在SELECT语句的WHERE子句中使用MATCHES运算符。

Oracle Text简介

4.XML搜索应用程序
XML搜索应用程序对XML文档执行搜索。 常规文档搜索通常会搜索一组文档,以返回满足文本谓词的文档。 XML搜索通常使用XML文档的结构来限制搜索。 通常,仅返回满足搜索条件的文档部分。 例如,用户可能只需要注释字段包含电力的采购订单,而不是查找包含单词"电力"的所有采购订单。

4.1具有XML搜索应用程序的CONTAINS运算符

CONTAINS运算符非常适合结构化搜索,可以使用WITHIN,HASPATH和INPATH运算符执行限制性搜索。 如果使用CONTEXT索引,那么还可以受益于Oracle Text搜索的以下特征:
注意:如果手动卸载Oracle Text,则删除DBMS_XDBT软件包。 如果手动安装Oracle Text,则创建DBMS_XDBT软件包。从Oracle Database 12c开始,当安装新的Oracle数据库软件或进行升级时,将自动安装Oracle XML数据库(XML DB)。

4.2将Oracle文本功能与Oracle XML DB(XML Search Index)相结合

当请想要对应用程序进行全文检索时,结合使用Oracle Text和Oracle XML DB的功能来创建XML搜索索引。 在这种情况下,通过输入诸如"查找包含单词Pentium的所有节点"之类的查询来利用XML结构。 Oracle Database 12c通过添加对XQuery全文扩展的支持,扩展了Oracle对W3C XQuery规范的支持。 通过此支持,可以对存储在数据库中的XML内容执行支持XML的全文搜索。

4.2.1使用xml_enable方法获取XML Search Index

XML Search Index是启用XML的Oracle文本索引(CTXSYS.CONTEXT)。 该索引类型在一个统一索引中支持信息检索搜索和结构化搜索。XML Search Index还在Oracle文本表中内部存储了二进制持久文档对象模型(PDOM),因此可以在二进制PDOM上对XML操作进行功能评估。 XMLTYPE数据存储支持此XML搜索索引。 在存在这样的XML搜索索引的情况下,XMLEXISTS被无缝地重写为CONTAINS查询。
创建XML Search Index时,将在Oracle Text内部表中实现XML文档的Binary PDOM。 来自Oracle Text索引的后期评估被重定向为与存储在此内部表中的PDOM背道而驰。
创建XML Search Index:
exec CTX_DDL.CREATE_SECTION_GROUP('secgroup','PATH_SECTION_GROUP');
exec CTX_DDL.SET_SEC_GRP_ATTR('secgroup','xml_enable','t');
CREATE INDEX po_ctx_idx on T(X) indextype is ctxsys.context parameters ('section group SECGROUP');
4.2.2使用Text-on-XML方法
使用Oracle Text,可以在包含XML数据的列上创建CONTEXT索引。 列类型可以是XMLType或任何受支持的类型,只要对XML数据使用正确的索引首选项。
使用XML上的文本方法,使用标准的CONTAINS查询并添加结构化约束,以将搜索范围限制为特定部分,字段,标记或属性。 即,指定文本运算符内部的结构,例如WITHIN,HASPATH和INPATH。
例如,设置的CONTEXT索引以使用XML文档创建章节。 考虑以下定义purchase order的XML文档:
<?xml version="1.0"?>
<PURCHASEORDER pono="1">
   <PNAME>Po_1</PNAME>
   <CUSTNAME>John</CUSTNAME>
   <SHIPADDR>
      <STREET>1033 Main Street</STREET>
      <CITY>Sunnyvalue</CITY>
      <STATE>CA</STATE>
   </SHIPADDR>
   <ITEMS>
     <ITEM>
       <ITEM_NAME> Dell Computer </ITEM_NAME>
       <DESC> Pentium 2.0 Ghz 500MB RAM  </DESC>
     </ITEM>
     <ITEM>
       <ITEM_NAME> Norelco R100 </ITEM_NAME>
       <DESC>Electric Razor </DESC>
     </ITEM>
   </ITEMS>
</PURCHASEORDER>
--要在ITEM描述部分中查询所有包含Pentium的purchase order,请使用WITHIN运算符:
SELECT id from po_tab where CONTAINS( doc, 'Pentium WITHIN DESC') > 0;
--使用INPATH运算符可以使用XPATH表达式指定更复杂的条件:
SELECT id from po_tab where  CONTAINS(doc, 'Pentium INPATH (/PURCHASEORDER/ITEMS/ITEM/DESC') > 0;

4.2.3索引JSON数据

JavaScript Object Notation(JSON)是一种独立于语言的数据格式,用于序列化结构化数据并通过网络(通常在服务器和Web应用程序之间)交换该数据。 JSON提供了一种基于文本的方式来表示JavaScript对象文字,数组和标量数据。
create table t1 (txn_date date, po CLOB, constraint c1 check (po is json));
create search index idx on t1(po) for JSON parameters('DATAGUIDE ON sync (on commit)');
推荐阅读:
  1. Oracle参数之cursor_sharing
  2. oracle安装及简介

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oracle text 简介

上一篇:C编译: 使用gdb调试

下一篇:​Nessus更新到8.9.1

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》