OracleText简介
Oracle Text为查询应用程序和文档分类应用程序中的文本提供索引,单词和主题搜索以及查看功能。
要设计Oracle Text应用程序,首先确定期望运行的查询类型。 知道类型后,就可以为任务选择最合适的索引。
Oracle Text用于以下类别的应用程序:
- Document Collection Applications
- Catalog Information Applications
- Document Classification Applications
- XML Search Applications
1.文档集合应用程序
文本查询应用程序使用户可以搜索文档集合,例如网站,数字图书馆或文档仓库。
1.1关于
文档集合应用集合
该集合通常是静态的,并且在初始索引运行之后,内容没有明显变化。 文档可以是任何大小和格式,例如HTML,PDF或Microsoft Word。 这些文档存储在文档表中。 通过首先为文档集合建立索引来启用搜索。
查询通常由单词或短语组成。 应用程序用户使用OR和AND等运算符指定单词和短语的逻辑组合。 用户可以应用其他查询操作来改善搜索结果,例如词干,邻近搜索和通配符。
对于这种类型的应用程序,应该检索与查询最相关的文档。 文档必须在结果列表中排在高位。
查询最好与文档表上的CONTEXT索引一起使用。 为了查询该索引,应用程序在SELECT语句的WHERE子句中使用SQL CONTAINS运算符。
十载的曹县网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整曹县建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“曹县网站设计”,“曹县网站推广”以来,每个客户项目都认真落实执行。
1.2文本查询应用程序流程图
文档集合上的典型文本查询应用程序使用户可以输入查询。 该应用程序输入CONTAINS查询,并返回满足查询条件的文档列表(称为命中列表)。 结果通常按相关性排名。 该应用程序使用户可以查看命中列表中的一个或多个文档。
例如,一个应用程序可能会索引Web上的URL(HTML文件)并在整个索引URL中提供查询功能。 查询应用程序返回的命中列表由用户可以访问的URL组成。
下图展示了用户与简单文本查询应用程序进行交互的流程图:
- 1)用户输入查询
- 2)该应用程序运行CONTAINS查询
- 3)应用程序将显示一个命中列表
- 4)用户从命中列表中选择文档
5)该应用程序将文档呈现给用户以供查看
2.目录信息应用程序
目录信息由库存类型信息组成,例如在线书店或拍卖网站。
2.1关于目录信息应用程序
存储的目录信息由文本信息(例如书名)和相关结构化信息(例如价格)组成。 通常会定期更新信息,以使在线目录与库存保持最新。
查询通常是文本组件和结构化组件的组合。 结果几乎总是按结构化组成部分排序,例如日期或价格。 良好的响应时间始终是此类查询应用程序的重要因素。
CTXCAT索引可以最好地服务Catalog应用程序。 在SELECT语句的WHERE子句中使用CATSEARCH运算符查询此索引。
2.2目录查询应用程序流程图
目录应用程序使用户可以搜索目录中的特定项目。 例如,在线商店应用程序使用户可以搜索和购买库存中的物品。 通常,用户查询由一个文本组件组成,该组件在文本描述以及一些其他订购条件(例如价格或日期)中进行搜索。
下图说明了在线电子商店的目录查询应用程序的流程图:
- 1)用户输入一个查询,该查询由文本组件(例如CD播放器)和结构化组件(例如按价格订购)组成。
- 2)该应用程序执行CATSEARCH查询。
- 3)该应用程序显示相应的排序结果。
- 4)用户浏览结果。
- 5)用户输入另一个查询或执行操作,例如购买商品。
3.文档分类应用程序
在文档分类应用程序中,将输入流或一组文档与一组预定义规则进行比较。 如果文档符合一个或多个规则,则应用程序将执行一项操作。
例如,假设有新闻报道传入。 定义一个规则来表示“财务”类别。 该规则本质上是一个或多个查询,用于选择有关财务主题的文档。 该规则可能具有“股票或债券或收益”的形式。
当文档到达华尔街收入预测并满足该类别的规则时,应用程序将采取措施,例如将文档标记为财务或向一个或多个用户发送电子邮件。
要创建文档分类应用程序,请创建一个规则表,然后创建一个CTXRULE索引。 要对输入的文本流进行分类,请在SELECT语句的WHERE子句中使用MATCHES运算符。
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文档:
Po_1 John 1033 Main Street Sunnyvalue CA Dell Computer Pentium 2.0 Ghz 500MB RAM Norelco R100 Electric Razor
--要在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)');
本文名称:OracleText简介
链接分享:http://pwwzsj.com/article/gedpig.html