登陆注册
7538600000021

第21章 Oracle的全文搜索(1)

本章要点

本章介绍基于Oracle数据库的全文搜索技术,这是在Java开发领域的一门重要技术,使用这项技术可以解决企业级的全文搜索问题。

5.1Oracle简介

Larry Ellison是Oracle公司的董事长兼执行总裁,1977年在加利福尼亚的Redwood,他和Robert Minor一起建立了Oracle公司。Oracle是在IBM的System R(关系模型)的基础上,推出了第一个关系型数据管理系统,这也是第一个使用IBM的结构化查询语言(SQL)的关系型数据库管理系统。

Oracle数据库系统最早于1979年推出(第一版的Oracle数据库是两个人写成的)。1984年完成Oracle PC版。1997年发布Oracle8,1999年推出Oracle8i。2001年,Oracle公司在Oracle8i数据库的基础上推出了新一代基于Internet电子商务构架的网络数据库解决方案Oracle9i,2004年推出了Oracle10g。

Oracle数据库目前是世界上最好的数据库,使用Oracle数据库是一种享受。

Oracle9i是目前中国使用得最多的数据库。它提供了灵活多样的数据分区功能,一个分区可以是一个大型表,也可以是索引易于管理的小块,可以根据数据的取值分区。它有效地提高了系统操作能力及数据可用性,减少I/O瓶颈。它还对并行处理进行了改进,在位图索引、查询、排序、连接和一般索引扫描等操作中引入并行处理,提高了单个查询的并行度。Oracle8通过并行服务器(Parallel Server Option)来提高系统的可用性。

Oracle9i提供了自动备份和恢复功能,改进了对大规模和更加细化的分布式操作系统的支持,如加强了SQL操作复制的并行性。为了帮助客户有效地管理整个数据库和应用系统,Oracle还提供了企业管理系统(Oracle Enterprise Manager),数据库管理员可以从一个集中控制台拖放式图形用户界面管理Oracle的系统环境。

Oracle9i通过安全服务器中提供的安全服务,加强了Oracle Web服务器中原有的用户验证和用户管理。

Oracle9i可以运行于目前所有主流平台上,如SUN Solarise,SequentDynix/PTX,IntelNT,HP UX,DEC UNIX,IBMAIX和SP等。Oracle9i的异构服务为同其他数据源及使用SQL和PL/SQL的服务进行通信提供了必要的基础设施。

Oracle公司除了提供完美的数据库系统外,也提供完整的解决方案的套件,它是一全面集成的电子商务套件。

Oracle数据库产品是当前数据库技术的典型代表。

Microsoft公司花了5年时间,让1000人去开发了SQL Server2005,但笔者认为它和Oracle相比,差得太远了。

5.2Oracle的全文搜索

Oracle一直致力于全文检索技术的研究,当Oracle9i Rlease2发布之时,Oracle数据库的全文检索技术已经非常完美,Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。

Oracle Text是Oracle9i采用的新名称,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8以前它的名称是OracleConTextCartridge。使用Oracle9i和Oracle Text,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展。应用程序开发人员可以在任何使用文本的Oracle数据库应用程序中充分利用OracleText搜索,应用范围可以是现有应用程序中可搜索的注释字段,也可是实现涉及多种文档格式和复杂搜索标准的大型文档管理系统。Oracle Text支持Oracle数据库所支持的大多数语言的基本全文搜索功能。

文本对于各种规模的公司、机构组织来说,都是包含众多丰富信息的最有效载体,OracleText的推出,标志着Oracle提供了一套崭新的技术,可以便捷安全地用于管理企业的文本信息。Oracle Text使应用程序开发者可以透明地将全文检索能力加入到基于SQL的应用程序中,Oracle Text也是其他Oracle产品的核心组件,比如Oracle9iAS Portal,Oracle eBusinessSuite,Oracle Ultra Search和Oracle Internet File System等。灵活运用Oracle Text提供的全文检索技术,就可以使自己的应用具备强大的全文检索能力。

Oracle9i之前版本的Oracle数据库为了启用全文搜索功能,必须手工安装组件。但是,鉴于Oracle9i的应用已经非常普及,这里就不介绍手工安装Oracle全文搜索组件的方法了。

5.2.1Oracle Text的索引

1.建立Oracle Text索引的步骤

与SQL Server的全文搜索方法类似,Oracle也要先对数据建立索引,然后才能执行搜索。

建立Oracle Text索引文档时所使用的主要逻辑步骤如下。

①数据存储逻辑(DATASTORE)搜索表的所有行,并读取列中的数据。通常,这只是列数据,但有些数据存储使用列数据作为文档数据的指针。例如,URLDATASTORE将列数据作为URL使用。

②过滤器(FILTER)提取文档数据并将其转换为文本表示方式。存储二进制文档(如Word或PDF文件)时需要这样做。过滤器的输出不必是纯文本格式,它可以是XML或HTML之类的文本格式。

③分段器(SECTIONER)提取过滤器的输出信息,并将其转换为纯文本。包括XML和HTML在内的不同文本格式有不同的分段器。转换为纯文本涉及检测重要文档段标记、移去不可见的信息和文本重新格式化。

④词法分析器(Lexer)提取分段器中的纯文本,并将其拆分为不连续的标记。既存在空白字符分隔语言使用的词法分析器,也存在分段复杂的亚洲语言使用的专门词法分析器。

⑤索引引擎(Indexing Engine)提取词法分析器中的所有标记、文档段在分段器中的偏移量,以及被称为非索引字的低信息含量字列表,并构建反向索引。倒排索引存储标记和含有这些标记的文档。

2.Oracle Text索引的类及其对象

Oracle Text的每个索引的许多选项组成功能组,称为“类”,每个类集中体现配置的某一方面,可以认为这些类就是与文档数据库有关的一些问题。例如:数据存储、过滤器、词法分析器、相关词表、存储等。

每个类具有许多预定义的行为,称为对象。每个对象是类问题可能具有的答案,并且大多数对象都包含有属性。通过属性来定制对象,从而使对索引的配置更加多变以适应于不同的应用。

(1)存储(Storage)类

存储类指定构成Oracle Text索引的数据库表和索引的表空间参数和创建参数。它仅有一个基本对象:BASIC STORAGE,其属性包括:I IndexClause,I TableClause,KTableClause,N TableClause,P TableClause和R TableClause。

(2)数据存储(Datastore)类

数据存储是指关于列中存储文本的位置和其他信息。默认情况下,文本直接存储到列中,表中的每行都表示一个单独的完整文档。其他数据存储位置包括存储在单独文件中或以其URL标识的Web页上。其七个基本对象包括:DefaultDatastore,DetailDatastore,DirectDatastore,FileDatastore,MultiColumnDatastore,URLDatastore和UserDatastore。

(3)文档段组(Section Group)类

文档段组是用于指定一组文档段的对象。必须先定义文档段,然后才能使用索引通过WITHIN运算符在文档段内进行查询。文档段定义为文档段组的一部分,包含七个基本对象:AUTO SECTION GROUP,BASIC SECTION GROUP,HTML SECTIONGROUP,NEWS SECTION GROUP,NULL SECTION GROUP,XML SECTIONGROUP和PATH SECTION GROUP。

(4)相关词表(Wordlist)类

相关词表标识用于索引的词干和模糊匹配查询选项的语言,它只有一个基本对象BASICWORDLIST,其属性有:Fuzzy Match,Fuzzy Numresults,Fuzzy Score,Stemmer,SubstringIndex,Wildcard Maxterms,Prefix Index,Prefix Max Length和Prefix Min Length。

(5)索引集(Index Set)

索引集是一个或多个Oracle索引(不是Oracle Text索引)的集合,用于创建CTXCAT类型的Oracle Text索引,只有一个基本对象BASIC INDEX SET。

(6)词法分析器(Lexer)类

词法分析器类标识文本使用的语言,还确定在文本中如何标识标记。默认的词法分析器是英语或其他西欧语言,用空格、标准标点和非字母数字字符标识标记,同时禁用大小写。它包含8个基本对象:BASIC LEXER,CHINESE LEXER,CHINESE VGRAM LEXER,JAPANESE LEXER,JAPANESE VGRAM LEXER,KOREAN LEXER,KOREANMORPH LEXER和MULTI LEXER。

(7)过滤器(Filter)类

过滤器确定如何过滤文本以建立索引。可以使用过滤器对文字处理器处理的文档、格式化的文档、纯文本和HTML文档建立索引,包括5个基本对象:CHARSET FILTER,INSOFILTER INSO,NULL FILTER,PROCEDURE FILTER,USER FILTER。

(8)非索引字表(Stoplist)类

非索引字表类是用以指定一组不编入索引的单词(称为非索引字)。有两个基本对象:BASICSTOPLIST(一种语言中的所有非索引字)、MULTI STOPLIST(包含多种语言中的非索引字的多语言非索引字表)。

5.2.2Oracle Text的搜索流程

使用Oracle Text技术进行搜索的基本流程如下。

1.装载文本

(1)文本列类型

默认的建立索引行为要求将文档装载在文本列中,尽管可以用其他方式(包括文件系统和URL形式)存储文档。文本列可以是VARCHAR2、CLOB、BLOB、CHAR或BFILE类型。

注意,只有在将Oracle7系统移植到Oracle8的情况下才支持用LONG和LONG RAW这两个相反的列类型存储文本。不能为列类型NCLOB,DATE和NUMBER建立索引。

(2)文档格式类型

因为系统能为包括HTML,PDF,Microsoft Word和纯文本在内的大多数文档格式建立索引,所以可以将其中的任何文档类型装载到文本列中。有关所支持的文档模式的详细信息,请参阅Oracle Text User’s Guide and Reference中的附录C:“Supported Filter Formats”。

(3)装载数据的方法

可以使用各种方法装载数据,包括:SQL INSERT语句,ctxload可执行文件,SQL*Loader从BFILE中装载LOB的DBMS LOB.LOADFROMFILE()PL/SQL过程,OracleCallInterface。

2.为文本建立索引

文本装入文本列后,就可以创建Oracle Text索引。创建索引并接受所有选项的默认值后,系统将为所有语言执行以下操作。

假定要建立索引的文本将直接存储在文本列中。检测列类型,并对二进制列类型进行过滤。过滤操作支持多数文档格式。如果列为纯文本格式,系统将不进行过滤。注意:要在系统中正确执行文档过滤操作,必须确保已将环境正确设置为支持Inso过滤器。有关配置环境以使用Inso过滤器的详细信息,请参阅Oracle Text User’s Guide and Reference。

同类推荐
  • 哈佛优等生的学习方法和培养细节

    哈佛优等生的学习方法和培养细节

    哈佛优等生的成功.除了他们有一套行之有效的学习方法之外,还取决于他们在点滴之间培养起来的智慧和能力。本书汲取百年哈佛培养优等生的经典智慧,全方位、多角度地对哈佛优等生的学习方法和培养细节进行了细致的阐释和归纳。旨在为广大青少年和家长朋友们提供一个可以借鉴和学习的读本。
  • 世界名人成长历程:创造成功的经济学家(4)

    世界名人成长历程:创造成功的经济学家(4)

    三十六行,行行皆有状元;而商场亦如战场,瞬间便又是另一翻风云。“创造成功的经济学家”为我们隆重讲述了商界名人们的成长史,品他们于商海间的每一个决策后的那份坚定和执着。
  • 另外一层世界

    另外一层世界

    本书图文并茂地介绍了各种灵异现象,包括伦敦塔内的鬼魂之谜、穿过“幽灵”的身影、神秘的灵异现象、人到底有没有灵魂、人类灵魂与多重、“鬼压床”是“鬼”吗、濒死体验者的描述、人类生死轮回之谜、孩童惊存前世记忆等。
  • 中学理科课程资源-了解数学名人

    中学理科课程资源-了解数学名人

    追溯数理化的演变历程,对话最新颖权威的方法,探索最成功的课程教学,感受最前沿的科技动态,理科教育的全程解码,数理化的直面写真。
  • 学生的智力素质教育与升级方案(上)

    学生的智力素质教育与升级方案(上)

    素质教育主要着眼干广大学生及社会长远发展的要求,以面向全体学生、全面提高学生的基本素质为根本宗旨,是以注重培养广大学生的态度、能力、促进他们在德智体等方面生动、活泼、主动地发展为基本特征的教育。
热门推荐
  • 没有不可能——西点军校给员工的22堂课

    没有不可能——西点军校给员工的22堂课

    本书以精炼的语言和老到的叙事对西点军校的校训理念进行了最到位的提炼与解读,是一本适合各个阶层员工阅读的优秀书籍。
  • 云氏猜想

    云氏猜想

    云氏猜想:生命终极猜想,生命意识的由来之迷。本文尝试用硬知识解构宇宙、探索生命,纯粹文学幻想,引以思考而已。……零维空间,宇宙归零重启空间。一维空间,生命终极空间。二维空间,物质毁灭空间。三维空间,又称四维时空,各宇宙文明之间战争发生的主战场。四维空间,死亡空间,意识生命在各维度空间的跳板。五维空间,创造无限可能,并主宰宇宙运行的空间。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 20—30岁职场的那些人和事

    20—30岁职场的那些人和事

    本书为广大青年朋友勾勒了一幅经典的职场路线图,能让大家少走不少弯路。该书从设计职业目标、做好前期准备、把握求职攻略、初入职场信条、快速融入团队、成为上司心腹、牢记职场禁忌、寻求突破发展等方面为你出谋划策,以助大家在30岁时事业上有所斩获,让人生少奋斗十年便能获得成功。
  • 《琳的中学》

    《琳的中学》

    程琳,一位学习极差,语文出奇好,但并不缺乏创造力的问题女学生,她与亲人的分离,孤独,与22号咖啡馆的经历,无不说明了她是一个经历了许多风风雨雨的学生,也许在他的年龄里她已成熟,对的,他的父亲也这样认为。自己的旅程,仿佛才刚刚开始。殊不知,她的中学,有可能就是22号咖啡馆。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 星夜之雪

    星夜之雪

    南宫婉情,一个17岁的高一女生,考上了一个女生很少考的理科高中【银河学院】,与五名性格各异的男生交织的命运,将会擦出怎样的爱情火花,隐藏在表面之下的神秘真相,又会揭开怎样的真实故事,就从入学的第一天开始···········
  • 让我来到你的世界

    让我来到你的世界

    她从来不知道他的温柔其实只是接近她的一种手段,他并不是她身边的蠢萌小跟班,他早已长成可以独当一面的腹黑总裁
  • 诡秘降世

    诡秘降世

    她出生天出异像,与众不同,她可以看见普通人看不见的,她爱好推理,梦想就是当个侦探,当她遇见一个扑朔迷离的案件时,从此便踏上侦探之路,在她接受各种各样的灵异案件和犯罪案件时,最后牵扯出自己前世今生的惊天秘密……
  • 天道代理

    天道代理

    一名在逃的少年凶徒,机缘巧合之下拜入了一个修仙门派,习得了无上功法,开始踏上了寻求天道获得永生的道路。然而适逢乱世,外道横行,且看少年如何成就天道之代理,行使天道的职责…