Oracle 11g Release 1 (11.1) Oracle 本文索引的四种类型

http://docs.oracle.com/cd/B28359_01/text.111/b28303/ind.htm#g1020588

本文内容

对于 Oracle 文本,你可以使用 CREATE INDEX 创建很多类型的索引。下面描述每个索引类型,以及他们的目的和支持的特性。

  • CONTEXT 索引
  • CTXCAT 索引
  • CTXRULE 索引
  • CTXXPATH 索引

CONTEXT

描述
  • 当你的文本是由大的、连续的文本组成时,可以使用该索引建立文本检索应用程序。你能为不同格式的文件建立索引,如 MS Word、HTML 或 纯文本。
  • 你可以以不同方式自定义索引。
  • 该类型索引在基表上执行 DML 后要求 CTX_DDL.SYNC_INDEX
支持的 preferences 和 parameters
  • 除了 INDEX SET,支持所有的 CREATE INDEX preferencesparameters
  • 这些支持的参数包括索引分区子句(index partition clause)、格式(format)、字符集(charset)和语言列(language columns)。
查询运算符

CONTAINS

  • 语法称为 CONTEXT 语法,它支持很多操作。
  • CTXCAT 语法则可以带模板查询。
注意
  • 支持所有的文本服务和查询服务。
  • 支持分区文本表的索引。
  • 支持 CREATE INDEXFILTER BYORDER BY 子句,也可以索引结构化列值,更有效地处理混合查询。

CTXCAT

描述
  • 使用该索引类型能够获得更好地混合查询性能。通常情况下,对于该索引,你可以为小文本或文本片段建立索引。例如,在基表的其他列上,如条目名、价格和描述,可以包含在索引中,以提高混合查询性能。
  • 该索引类型在 DML 后是事务性、自动更新的,而不需要 CTX_DDL.SYNC_INDEX
支持的 preferences 和 parameters

INDEX SET

LEXER

STOPLIST

STORAGE

  • WORDLIST (仅 prefix_index  属性支持日语数据)。
  • 不支持格式(Format)、字符集(charset)和语言列。
  • 不支持表和索引分区。
查询运算符

CATSEARCH

  • 语法称为 CTXCAT,它支持逻辑运算符,短语查询和通配符。
  • CONTEXT 语法可以带模板查询。
  • 支持主题查询。
注意
  • 该索引较大,并且创建时间比 CONTEXT 长。
  • CTXCAT 索引的大小与文本总量大小、索引集中的索引数量和索引列的数量有关。在向索引集添加索引前,仔细考虑你的查询和资源。
  • CTXCAT 索引不支持表和索引分区,文本服务(高亮、标记、主题和概要),或查询服务(解释、查询反馈和浏览词)。

CTXRULE

描述
  • 使用 CTXRULE 索引来建立文件分类或路由应用程序。该索引在一个查询表上建立,查询定义分类或路由标准。
支持的 preferences 和 parameters
  • 如果使用 SVM_CLASSIFIER 分类器,那么你可以使用 BASIC_LEXERCHINESE_LEXERJAPANESE_LEXER,或 KOREAN_MORPH_LEXER 分词器。如果不使用 SVM_CLASSIFIER,那只能为你的查询集使用 BASIC_LEXER 分词器。(更多关于 Oracle 文本分词器和分类器
  • Filter、memory、datastore,和 [no]populate 参数不适合 CTXRULE 索引。
  • CREATE INDEX 子句支持在查询上创建索引。
  • 通配符支持在查询集上进行模糊操作
  • CTXRULE 索引进行查询类似于那些使用 CONTAINS 的查询。支持词组(“dog house”),以及下面 CONTAINS 运算符:ABOUTANDNEARNOTORSTEMWITHINTHESAURUS。支持节分组,使用 MATCHES  运算符分类文档,也支持字段节。然而,CTXRULE 不直接支持字段的查询,必须在一个 CONTEXT 查询上使用查询重写。
查询运算符

MATCHES

备注
  • 可以通过 MATCHES 运算符把单个文件(纯文本、HTML,或 XML)分类,它把一个文件转换成一组查询,并且在 CTXRULE 索引中查找匹配的行。

CTXXPATH

描述
  • 当你需要在 XMLType 列上加速 existsNode() 时,创建这类索引。
支持的 preferences 和 parameters

STORAGE

查询运算符

existsNode()

备注
  • 这类索引将会弃用,只是为了与之前版本的 Oracle 数据库向后兼容,之前版的 Oracle 的 XMLIndex 索引不可用。如果你正在建立一个新的应用程序,那么,Oracle 建议你使用 XMLIndex 索引。
  • 该索引只能创建在 XMLType 列。
  • 尽管该索引对 existsNode() 查询很有用,但对于 XML 搜索并不需要。

总结

一个 Oracle 文本索引是一个 Oracle 数据库域索引。若要建立查询应用程序,你可以创建一个文本和结构化数据列相混合的 CONTEXT 索引,并用 CONTAINS 运算符查询。

你可以从一个文本表创建索引。在一个查询应用程序中,这个表必须包含文本或指向文本存储位置的指针。文本通常是文件的集合,但也可以是小的文本片段。

为了让混合查询获得更好地性能,你可以用 FILTER BY 和/或 ORDER BY 子句指定关系列,创建一个 CONTEXT 索引。 查询该索引得用 CONTAINS 运算符。

当你的应用程序严重依赖混合查询,基于相关标准,如日期或价格,来搜索小文件或描述性文本片段,可以使用 CTXCAT 索引。查询该索引使用 CATSEARCH 运营商。

若通过使用“简单或基于规则分类”来建立一个文档分类应用程序,这需要创建 CTXRULE 索引。该索引使用 MATCHES 运算符归类纯文本,HTML 或 XML 文档。在你索引的文本表中,存储你定义的查询集。

如果您正在使用 XMLType 列,那么创建 XMLIndex 索引,以加快带 existsNode() 查询速度。

使用标准 SQL,创建一个文本索引作为对 Oracle 数据库一类可扩展的索引。也就说,Oracle 文本索引运算符与 Oracle 数据库索引类似。它有一个可被引用的名称,可以用标准 SQL 语句操作。

创建 Oracle 文本索引的好处是,加快用带 CONTAINSCATSEARCH,和 MATCHES Oracle 文本运算符进行文本查询的响应速度。这些运算符分别用来查询 CONTEXTCTXCATCTXRULE 索引。

注意:

因为透明数据加密不支持域索引,因此不能使用 Oracle 文本。

原文地址:https://www.cnblogs.com/liuning8023/p/2436373.html