您的位置:首页 > 数据库 > Oracle

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

2012-04-07 19:04 507 查看
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 文本。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: