知识大全 Oracle9i的全文检索技术
Posted 索引
篇首语:刀不磨要生锈,人不学要落后。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle9i的全文检索技术相关的知识,希望对你有一定的参考价值。
Oracle9i的全文检索技术 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Oracle一直致力于全文检索技术的研究 当Oracle i Rlease 发布之时 Oracle数据库的全文检索技术已经非常完美 Oracle Text使Oracle i具备了强大的文本检索能力和智能化的文本管理能力 Oracle Text是Oracle i采用的新名称 在Oracle / i中它被称作Oracle interMedia Text 在Oracle 以前它的名称是Oracle ConText Cartridge 使用Oracle i和Oracle Text 可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展 应用程序开发人员可以在任何使用文本的Oracle数据库应用程序中充分利用Oracle Text搜索 应用范围可以是现有应用程序中可搜索的注释字段 也可是实现涉及多种文档格式和复杂搜索标准的大型文档管理系统 Oracle Text支持Oracle数据库所支持的大多数语言的基本全文搜索功能 本文将介绍如何使用Oracle i的全文检索技术来为自己的应用提供一个优秀的解决方案 Oracle Text的体系架构 下图是Oracle Text的体系架构 > > 以上面的体系架构图为基础 Oracle Text 索引文档时所使用的主要逻辑步骤如下 ( )数据存储逻辑搜索表的所有行 并读取列中的数据 通常 这只是列数据 但有些数据存储使用列数据作为文档数据的指针 例如 URL_DATASTORE 将列数据作为 URL 使用 ( )过滤器提取文档数据并将其转换为文本表示方式 存储二进制文档 (如 Word 或 Acrobat 文件) 时需要这样做 过滤器的输出不必是纯文本格式 它可以是 XML 或 HTML 之类的文本格式 ( )分段器提取过滤器的输出信息 并将其转换为纯文本 包括 XML 和 HTML 在内的不同文本格式有不同的分段器 转换为纯文本涉及检测重要文档段标记 移去不可见的信息和文本重新格式化 ( )词法分析器提取分段器中的纯文本 并将其拆分为不连续的标记 既存在空白字符分隔语言使用的词法分析器 也存在分段复杂的亚洲语言使用的专门词法分析器 ( )索引引擎提取词法分析器中的所有标记 文档段在分段器中的偏移量以及被称为非索引字的低信息含量字列表 并构建反向索引 倒排索引存储标记和含有这些标记的文档 简单的示例 这里先给出一个简单示例说利用Oracle Text实现全文检索的方法与步骤 在后面在进行具体的说明 Orcale i提供了Oracle Text Manager可以简化许多工作 所有在Oracle Text Manager中完成的工作 都可以在通过PL/SQL来实现 要使用Oracle Text 必须具有CTXAPP角色或者是CTXSYS用户 Oracle Text为系统管理员提供CTXSYS用户 为应用程序开发人员提供CTXAPP角色 CTXSYS用户可执行以下任务 启动Oracle Text服务器 执行CTXAPP角色的所有任务 具有CTXAPP角色的用户可执行以下任务 创建索引 管理 Oracle Text 数据字典 包括创建和删除首选项 进行Oracle Text 查询 使用 Oracle Text PL/SQL程序包 使用Oracle Text的步骤 ( )创建表来保存某些文档 该示例使用一个主关键字列来标识每个文档 使用一个小的VARCHAR 列来保存每个文档 CREATE TABLE docs (id NUMBER PRIMARY KEY text VACHAR ( )); ( )将两个示例文档置入该表 INSERT INTO docs VALUES ( the first doc ) INSERT INTO docs VALUES ( the second doc ) MIT ( )使用Oracle Text Manager来创建和修改首选项 首选项将与索引相关联 ( )使用Oracle Text Manager创建文本索引 另外 可以输入以下使用默认首选项的 SQL 语句 CREATE INDEX doc_index ON docs(text) INDEXTYPE IS CTXSYS CONTEXT; ( )使用 CONTAINS 函数 发出基于内容的文档查询 例如 SELECT id FROM docs WHERE CONTAINS (text first ) > ; 这将在文本列包含单词 first (即文档 ) 的 docs 中查找所有行 语句中的> 部分是有效的Oracle SQL所必需的 Oracle SQL不支持函数的布尔返回值 以上只是一个简单的示例 旨在给出使用Oracle Text建立全文索引的完整步骤 归纳起来如下 ( )建表并装载文本(包含带有需要检索的文本字段) ( )配置索引 ( )建立索引 ( )发出查询 ( )索引维护 同步与优化(将在后面介绍) 文本装载 要实现文本的全文检索首先必须把正确的文本加载到数据库表中 默认的建立索引行为要求将文档装载在文本列中 尽管可以用其它方式 (包括文件系统和 URL 形式)存储文档 (在 数据存储 选项进行设置) 默认情况下 系统应该将文档装载在文本列中 文本列可以是VARCHAR CLOB BLOB CHAR或BFILE 注意 只有在将Oracle 系统移植到Oracle 的情况下才支持用LONG和LONG RAW 这两个相反的列类型存储文本 不能为列类型NCLOB DATE和NUMBER建立索引 关于文档格式 因为系统能为包括HTML PDF Microsoft Word和纯文本在内的大多数文档格式建立索引 可以将其中的任何文档类型装载到文本列中(在 过滤器 选项中设置) 有关所支持的文档格式的详细信息 可以参阅Oracle Text User s Guide and Reference 中的附录 Supported Filter Formats 装载方法主要有以下几种 ( )SQL INSERT 语句 ( )ctxload 可执行文件 ( )SQL*Loader ( )从 BFILE 中装载 LOB 的 DBMS_LOB LOADFROMFILE() PL/SQL 过程 ( )Oracle Call Interface 为文本建立索引 文本装入文本列后 就可以创建Oracle Text索引 文档以许多不同方案 格式和语言存储 因此 每个 Oracle Text 索引有许多需要设置的选项 以针对特定情况配置索引 创建索引时 Oracle Text可使用若干个默认值 但在大多数情况下要求用户通过指定首选项来配置索引 每个索引的许多选项组成功能组 称为 类 每个类集中体现配置的某一方面 可以认为这些类就是与文档数据库有关的一些问题 例如 数据存储 过滤器 词法分析器 相关词表 存储等 每个类具有许多预定义的行为 称之为对象 每个对象是类问题可能具有的答案 并且大多数对象都包含有属性 通过属性来定制对象 从而使对索引的配置更加多变以适应于不同的应用 ( )存储(Storage)类 存储类指定构成Oracle Text索引的数据库表和索引的表空间参数和创建参数 它仅有一个基本对象 BASIC_STORAGE 其属性包括 I_Index_Clause I_Table_Clause K_Table_Clause N_Table_Clause P_Table_Clause R_Table_Clause ( )数据存储(Datastore)类 数据存储 关于列中存储文本的位置和其他信息 默认情况下 文本直接存储到列中 表中的每行都表示一个单独的完整文档 其他数据存储位置包括存储在单独文件中或以其 URL 标识的 Web 页上 七个基本对象包括 Default_Datastore Detail_Datastore Direct_Datastore File_Datastore Multi_Column_Datastore URL_Datastore User_Datastore ( )文档段组(Section Group)类 文档段组是用于指定一组文档段的对象 必须先定义文档段 然后才能使用索引通过 WITHIN 运算符在文档段内进行查询 文档段定义为文档段组的一部分 包含七个基本对象 AUTO_SECTION_GROUP BASIC_SECTION_GROUP HTML_SECTION_GROUP NEWS_SECTION_GROUP NULL_SECTION_GROUP XML_SECTION_GROUP PATH_SECTION_GROUP ( )相关词表(Wordlist)类 相关词表标识用于索引的词干和模糊匹配查询选项的语言 只有一个基本对象BASIC_WORDLIST 其属性有 Fuzzy_Match Fuzzy_Numresults Fuzzy_Score Stemmer Substring_Index Wildcard_Maxterms Prefix_Index Prefix_Max_Length Prefix_Min_Length ( )索引集(Index Set) 索引集是一个或多个Oracle 索引 (不是Oracle Text索引) 的集合 用于创建 CTXCAT类型的Oracle Text索引 只有一个基本对象BASIC_INDEX_SET ( )词法分析器(Lexer)类 词法分析器类标识文本使用的语言 还确定在文本中如何标识标记 默认的词法分析器是英语或其他西欧语言 用空格 标准标点和非字母数字字符标识标记 同时禁用大小写 包含 个基本对象 BASIC_LEXER CHINESE_LEXER CHINESE_VGRAM_LEXER JAPANESE_LEXER JAPANESE_VGRAM_LEXER KOREAN_LEXER KOREAN__MORPH_ LEXER MULTI_LEXER ( )过滤器(Filter)类 过滤器确定如何过滤文本以建立索引 可以使用过滤器对文字处理器处理的文档 格式化的文档 纯文本和 HTML 文档建立索引 包括 个基本对象 CHARSET_FILTER INSO_FILTER INSO NULL_FILTER PROCEDURE_FILTER USER_FILTER ( )非索引字表(Stoplist)类 非索引字表类是用以指定一组不编入索引的单词 (称为非索引字) 有两个基本对象 BASIC_STOPLIST (一种语言中的所有非索引字) MULTI_STOPLIST (包含多种语言中的非索引字的多语言非索引字表) 查询 建立了索引 就可以使用 SELECT 语句中的 CONTAINS 运算符发出文本查询 使用 CONTAINS 可以进 cha138/Article/program/Oracle/201311/18440相关参考
知识大全 Oracle9i 数据库管理实务讲座(五)-手动建立 Oracle9i 数据库
Oracle9i数据库管理实务讲座(五)-手动建立Oracle9i数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们
知识大全 Oracle9i 数据库管理实务讲座(四)-Oracle9i 数据库实体结构
Oracle9i数据库管理实务讲座(四)-Oracle9i数据库实体结构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们
知识大全 Oracle9i 数据库管理实务讲座(六)-利用 DBCA 建立 Oracle9i 数据库(1)
Oracle9i数据库管理实务讲座(六)-利用DBCA建立Oracle9i数据库(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布
Oracle9i安装手记 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一硬件 曙光服务器GR
Oracle9i的查询优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 执行概要 本文描述了
Oracle9i的物理内存管理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Oraclei以
Oracle9i的标量数据类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Oraclei的标量数
Oracle9i实体化视图 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oraclei实体化视
Oracle9i中监视索引的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 介绍
需要Oracle9i的10大理由 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作者SteveL