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
CONTEXT 索引
CTXCAT 索引
CTXRULE 索引
CTXXPATH 索引
你可以以不同方式自定义索引。
该类型索引在基表上执行 DML 后要求 CTX_DDL.SYNC_INDEX 。
支持的 preferences 和 parameters 除了 INDEX SET,支持所有的 CREATE INDEX preferences 和 parameters。
这些支持的参数包括索引分区子句(index partition clause)、格式(format)、字符集(charset)和语言列(language columns)。
查询运算符
CTXCAT 语法则可以带模板查询。
注意 支持所有的文本服务和查询服务。
支持分区文本表的索引。
支持 CREATE INDEX 的 FILTER BY 和 ORDER BY 子句,也可以索引结构化列值,更有效地处理混合查询。
该索引类型在 DML 后是事务性、自动更新的,而不需要 CTX_DDL.SYNC_INDEX。
支持的 preferences 和 parameters
不支持格式(Format)、字符集(charset)和语言列。
不支持表和索引分区。
查询运算符
CONTEXT 语法可以带模板查询。
支持主题查询。
注意 该索引较大,并且创建时间比 CONTEXT 长。
CTXCAT 索引的大小与文本总量大小、索引集中的索引数量和索引列的数量有关。在向索引集添加索引前,仔细考虑你的查询和资源。
CTXCAT 索引不支持表和索引分区,文本服务(高亮、标记、主题和概要),或查询服务(解释、查询反馈和浏览词)。
支持的 preferences 和 parameters 如果使用 SVM_CLASSIFIER 分类器,那么你可以使用 BASIC_LEXER、CHINESE_LEXER、JAPANESE_LEXER,或 KOREAN_MORPH_LEXER 分词器。如果不使用 SVM_CLASSIFIER,那只能为你的查询集使用 BASIC_LEXER 分词器。(更多关于 Oracle 文本分词器和分类器)
Filter、memory、datastore,和 [no]populate 参数不适合 CTXRULE 索引。
CREATE INDEX 子句支持在查询上创建索引。
通配符支持在查询集上进行模糊操作
用 CTXRULE 索引进行查询类似于那些使用 CONTAINS 的查询。支持词组(“dog house”),以及下面 CONTAINS 运算符:ABOUT、AND、NEAR、NOT、OR、STEM、WITHIN 和 THESAURUS。支持节分组,使用 MATCHES 运算符分类文档,也支持字段节。然而,CTXRULE 不直接支持字段的查询,必须在一个 CONTEXT 查询上使用查询重写。
查询运算符
支持的 preferences 和 parameters
该索引只能创建在 XMLType 列。
尽管该索引对 existsNode() 查询很有用,但对于 XML 搜索并不需要。
你可以从一个文本表创建索引。在一个查询应用程序中,这个表必须包含文本或指向文本存储位置的指针。文本通常是文件的集合,但也可以是小的文本片段。
为了让混合查询获得更好地性能,你可以用 FILTER BY 和/或 ORDER BY 子句指定关系列,创建一个 CONTEXT 索引。 查询该索引得用 CONTAINS 运算符。
当你的应用程序严重依赖混合查询,基于相关标准,如日期或价格,来搜索小文件或描述性文本片段,可以使用 CTXCAT 索引。查询该索引使用 CATSEARCH 运营商。
若通过使用“简单或基于规则分类”来建立一个文档分类应用程序,这需要创建 CTXRULE 索引。该索引使用 MATCHES 运算符归类纯文本,HTML 或 XML 文档。在你索引的文本表中,存储你定义的查询集。
如果您正在使用 XMLType 列,那么创建 XMLIndex 索引,以加快带 existsNode() 查询速度。
使用标准 SQL,创建一个文本索引作为对 Oracle 数据库一类可扩展的索引。也就说,Oracle 文本索引运算符与 Oracle 数据库索引类似。它有一个可被引用的名称,可以用标准 SQL 语句操作。
创建 Oracle 文本索引的好处是,加快用带 CONTAINS、CATSEARCH,和 MATCHES Oracle 文本运算符进行文本查询的响应速度。这些运算符分别用来查询 CONTEXT、CTXCAT 和 CTXRULE 索引。
本文内容
对于 Oracle 文本,你可以使用 CREATE INDEX 创建很多类型的索引。下面描述每个索引类型,以及他们的目的和支持的特性。CONTEXT 索引
CTXCAT 索引
CTXRULE 索引
CTXXPATH 索引
CONTEXT
描述 当你的文本是由大的、连续的文本组成时,可以使用该索引建立文本检索应用程序。你能为不同格式的文件建立索引,如 MS Word、HTML 或 纯文本。你可以以不同方式自定义索引。
该类型索引在基表上执行 DML 后要求 CTX_DDL.SYNC_INDEX 。
支持的 preferences 和 parameters 除了 INDEX SET,支持所有的 CREATE INDEX preferences 和 parameters。
这些支持的参数包括索引分区子句(index partition clause)、格式(format)、字符集(charset)和语言列(language columns)。
查询运算符
CONTAINS
语法称为 CONTEXT 语法,它支持很多操作。CTXCAT 语法则可以带模板查询。
注意 支持所有的文本服务和查询服务。
支持分区文本表的索引。
支持 CREATE INDEX 的 FILTER BY 和 ORDER BY 子句,也可以索引结构化列值,更有效地处理混合查询。
CTXCAT
描述 使用该索引类型能够获得更好地混合查询性能。通常情况下,对于该索引,你可以为小文本或文本片段建立索引。例如,在基表的其他列上,如条目名、价格和描述,可以包含在索引中,以提高混合查询性能。该索引类型在 DML 后是事务性、自动更新的,而不需要 CTX_DDL.SYNC_INDEX。
支持的 preferences 和 parameters
INDEX SET
LEXER
STOPLIST
STORAGE
WORDLIST (仅 prefix_index 属性支持日语数据)。LEXER
STOPLIST
STORAGE
不支持格式(Format)、字符集(charset)和语言列。
不支持表和索引分区。
查询运算符
CATSEARCH
语法称为 CTXCAT,它支持逻辑运算符,短语查询和通配符。CONTEXT 语法可以带模板查询。
支持主题查询。
注意 该索引较大,并且创建时间比 CONTEXT 长。
CTXCAT 索引的大小与文本总量大小、索引集中的索引数量和索引列的数量有关。在向索引集添加索引前,仔细考虑你的查询和资源。
CTXCAT 索引不支持表和索引分区,文本服务(高亮、标记、主题和概要),或查询服务(解释、查询反馈和浏览词)。
CTXRULE
描述 使用 CTXRULE 索引来建立文件分类或路由应用程序。该索引在一个查询表上建立,查询定义分类或路由标准。支持的 preferences 和 parameters 如果使用 SVM_CLASSIFIER 分类器,那么你可以使用 BASIC_LEXER、CHINESE_LEXER、JAPANESE_LEXER,或 KOREAN_MORPH_LEXER 分词器。如果不使用 SVM_CLASSIFIER,那只能为你的查询集使用 BASIC_LEXER 分词器。(更多关于 Oracle 文本分词器和分类器)
Filter、memory、datastore,和 [no]populate 参数不适合 CTXRULE 索引。
CREATE INDEX 子句支持在查询上创建索引。
通配符支持在查询集上进行模糊操作
用 CTXRULE 索引进行查询类似于那些使用 CONTAINS 的查询。支持词组(“dog house”),以及下面 CONTAINS 运算符:ABOUT、AND、NEAR、NOT、OR、STEM、WITHIN 和 THESAURUS。支持节分组,使用 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 文本索引的好处是,加快用带 CONTAINS、CATSEARCH,和 MATCHES Oracle 文本运算符进行文本查询的响应速度。这些运算符分别用来查询 CONTEXT、CTXCAT 和 CTXRULE 索引。
注意:
因为透明数据加密不支持域索引,因此不能使用 Oracle 文本。
因为透明数据加密不支持域索引,因此不能使用 Oracle 文本。
相关文章推荐
- Oracle 11g Release (11.1) 索引底层的数据结构
- Oracle 11g Release 1 (11.1) Oracle 文本自定义 CONTEXT 索引的“偏好”
- Oracle 11g Release 1 (11.1) PL/SQL_了解 Collections 和 Records 类型
- Oracle 11g Release 1 (11.1) PL/SQL_多维 Collection 类型和其异常
- Oracle 11g Release 1 (11.1) Oracle Text——演示创建 Oracle Text 索引
- Oracle 11g Release 1 (11.1) Oracle Text 如何创建 CTXCAT 索引
- Oracle 11g Release 1 (11.1) Oracle Text 如何创建 CONTEXT 索引
- Oracle 11g Release 1 (11.1) PL/SQL_理解 Collection 类型
- Oracle 11g Release (11.1) 索引底层的数据结构
- Oracle 11g Release 1 (11.1) PL/SQL_理解 Record 类型
- Oracle 11g Release 1 (11.1) 游标——显式游标
- Oracle 11g Release 1 (11.1) 单行函数——数字函数
- Oracle 11g Release 1 (11.1) 表空间——创建和扩展永久表空间
- Oracle 11g Release 1 (11.1) SQL_层级查询(详)
- Oracle 11g Release 1 (11.1) 单行函数——NULL 相关函数
- Oracle 11g Release 1 (11.1)——简单管理聚簇
- Oracle 11g Release 1 (11.1) 游标——在 PL/SQL 管理游标
- Oracle 11g Release 1 (11.1)——聚簇和非聚簇的简单查询比较
- Oracle 11g Release 1 (11.1) 表空间——简单管理永久表空间
- 关于 Oracle 11g Release 1 (11.1) Oracle Text 应用程序开发