1、 基于NoSQL技术的文档检索系统设计与实现 学 院 计算机科学与技术 专 业 计算机科学与技术 年 级 2007 级 姓 名 兰 超 指导教师 张坤龙 2011年 6 月 15 日 摘 要 NoSQL 技术随着 Web2.0 的兴起成了一个极其热门的新领域,并诞生了许多不同于传统关系型数据库的非关系型存储技术。 这些 NoSQL 数据库提供的很多特性使之非常适合作为文档检索和存储的解决方案。 论文 工作分为两个部分,第一部分是基于 Apache MINA 和 Drools,设计并实现了一个轻量 级中间组件 MO,实现了调用逻辑与具体实现分离,使系统具有高的可扩展性和与低的耦合度 , 上层应用
2、通过统一的方式调用服务,用户可以方便地对现有底层功能修改 、 扩展 、 集成不同的应用组件,而不对系统造成大的影响。第二部分是 基于 NoSQL 方式的存储技术, 设计并实现了针对 PDF 等格式的文档 的存储、索引和检索的系统。 存储索引和检索 的内容包括文档的全文和描述文档的元数据。对于全文采用建立倒排索引的方式支持全文检索,通过对象存储的方式存储索引和全文;对于文档的元数据,采用 XML 描述和存储,利用 XQuery 来 对其查询。最后论文对系 统性能做了测试,在索引和检索方面系统均达到了课题要求。 关键词: NoSQL;全文检索; 倒排索引; 文档 检索 ABSTRACT NoSQL
3、 technology has become a new, active area with the rise of Web 2.0. A number of non-relational databases were designed, which are different from the traditional relational databases. The NoSQL databases provide a lot of features that makes them suitable as the solutions of a document retrieval and m
4、anagement system. Firstly, the paper, based on Apache MINA and Drools, design and implement a lightweight intermediate component MO. System using MO could achieve the separation of calling logic and function realization. So the system can easily be modified, expanded or integrate a set of different
5、applications without effect other parts of the system. Calling of the services from the upper level are unified in a fixed interface. System can be highly scalable and loosely coupled. Secondly, the paper design and implement a system which could index, store, and retrieval documents in special form
6、ats such as PDF. Indexing and retrieving include both the full context and metadata that described in XML format of the document. Key words: NoSQL; full-text search; Inverted index; document retrieval 1 目 录 第一章 绪论 1 1.1 研究背景 . 1 1.1.1 应用背景 1 1.1.2 基于 关系型数据库的文档存储检索 1 1.1.3 全文检索技术 2 1.1.4 XML 可扩展标记语言
7、2 1.1.5 NoSQL 数据库技术 3 1.2 研究目的及意义 . 4 1.3 研究现状 . 4 1.3.1 基于关系数据库的文档存储检索方案 4 1.3.2 非关系型数据库解决方案 4 1.3.3 信息检索技术 5 1.4 本文结构 . 5 第二章 相关 算法和技术 . 7 2.1 NoSQL 技术 . 7 2.1.1 CAP 理论 . 7 2.1.2 NoSQL 数据库 9 2.2 基于关键词的全文检索 . 10 2.2.1 文本索引查询模型 11 2.2.2 相似度测量算法 12 2.3 XML 数据的管理 . 14 2.4 XQuery 15 2.5 JSON 技术 16 2.6
8、Apache MINA . 17 2.7 Drools 规则引擎 . 17 2.8 IKAnalyzer 分词器 . 18 2.9 本章小结 . 18 第三章 可扩展系统框架 . 19 3.1 整体设计 . 20 2 3.2 数据交换格式方案 . 21 3.3 MO 的设计与实现 . 23 3.3.1 I/O 框架 . 24 3.3.2 事件处理逻辑单元 25 3.3.3 MO 运行流程 27 3.4 本章小结 . 28 第四章 文档检索服务 29 4.1 全文检索 . 29 4.1.1 文本抽取 31 4.1.2 分词 32 4.1.3 倒排索引 34 4.1.4 存储 38 4.1.5 关
9、键词检 索 39 4.2 文档元数据检索 . 39 4.3 本章小结 . 41 第五章 实验结果及分析 . 42 5.1 文档索引 . 42 5.2 文档检索 . 43 5.2.1 关键词检索测试 43 5.2.2 元数据检索测试 44 5.3 结果分析 . 44 5.4 本章小结 . 45 第六章 总结及展望 . 46 6.1 本文工作总结 . 46 6.2 课题展望 . 46 参考文献 48 外文资料 中文译文 致谢 天津大学 2007 届本科生毕业设计(论文) 1 第一章 绪论 1.1 研究背景 论 文的目的是 设计一个针对多种格式文档进行处理的可扩展的应用服务框架,并在框架中实现对文档
10、的全文和元数据的存储,索引和检索等服务 。 首先需要设计一个系统框架,使得系统可以通过统一的方式对上层应用提供服务,按照统一协议接受 请求和返回数据,并且要便于对现有服务进行修改和扩展,使得逻辑和具体实现分离。 1.1.1 应用背景 文档是人类智慧的资产。 现实中 有 很多海量的文档管理的问题 , 如存储管理困难,查找缓慢,效率 低 下 等 。因此,需要有一种方法, 除了 能够 把文档的内容合理存储以外,还 可以对文档高效便捷的查询。这 就 需要 开发者 针对用户的需求 ,首先 设计一种合理的系统架构, 选择一种恰当的存储方式,然后 合理的设计系统的检索功能。要设计合理的检索功能,最直接的功能
11、应该是文档的全文检索,即用户可以通过提交 关键词 ,系统 计算并 返回和用户查询相关的文档。 同 时 ,文档除了正文之外,包括很多其他信息,如标题,出处,日期等等。用户也许希望细化他们查询,对文档的不同部分做不同的限定,例如用户可能希望查询 2010 年发表于某期刊的某 一 主题的文章,这是简单的全文检索无法做到的。但是这种查询可以以全文检索为基础,对其功能进行扩展, 提供文档的元数据查询, 来满足用户的这种需求,同时保证检索的效率。 1.1.2 基于 关系型数据库 的 文档存储检索 传统的关系型数据库是由 IBM 的 E. F. Codd 在 1970 年发明 的, Codd 在论文 1中提
12、出了关系型数据库这个概念,并且做出了关系型数据库的定义 以及 著名的 Codd s 12 rules。简单来说,关系型数据库就是数据被以一系列严格形式化描述的表的形式组织起来,这些表能够被通过多种方式访问或重组而不破坏原有的数据库的组织形式。所以关系型数据库就是将数据呈现为关系,而且能够对数据进行关系运算。这些特点使得关系型数据库成为了数据库的主流,而且至今被广泛采用。关系型数据库的检索和存储是基于关系运算,存储数据首先要定义表完整的 Schema,所以能够对具有完整 Schema 结构化的数据提供高效的查询性能。 Schema 定义好了之后,加载数据,然后定义合适的索引,这样SQL 语言就能
13、够提供出色的查询性能。但是,关系型数据库有几项先天不足 1,比如 Schema first, data later 的方法缺乏灵活性,用户往往无法使用这种方法天津大学 2007 届本科生毕业设计(论文) 2 来存储和管理规模较大的非结构化数据或者是结构比较奇异的数据。即使数据是结构化的,设计数据的 Schema 仍然是一个艰巨的而且是容易出现纰漏的过程。所以,对于大 规模的 文档类型的数据,通常的做法都是把这些数据存放在LOB 列中。为了让关系型数据库能够对这些数据进行检索,一般还要借鉴信息检索的方法,在这部分数据之上建立一个文档的倒排索引 2,以加速信息检索风格的基于关键词的检索 3。在现在
14、的 SQL 语句中,提供了一个 CONTAINS()语句 4, 可以提供对目标列的关键词检索 。 1.1.3 全文检索技术 在过去的十几年中,文本搜索引擎获得了巨大的发展。一系列新的索引表示方法推动了包括 index 存储, index 构建和 query 评估等一个广泛领域的不断创新。文本检索是文本搜索引擎的核心技术,也是当前整个信息检索领域的核心技术。搜索引擎索引整个 Web 互联网,提供了一种快速便捷的访问信息的方式,而这在十年前还是不可想象的。而且文本检索还在其他的方面起到了关键作用,比如在 桌面操作系统中为很多应用提 供了高效的文本搜索,为普通用户提供桌面搜索,帮助他们 在 PC 上
15、快速定位文档 。 搜索引擎在结构上很类似与数据库系统,文档被存储在仓库里,系统维护一个文档的索引。用户向系统提交查询,系统处理用户查询,找到匹配的项,然后返回给用户。但是,二者有很多 不同的地方。数据库系统必须构建比较复杂的结构化的查询,而大部分 搜索引擎接受的查询是一些短语和词组的结合。在数据库系统中, “ 匹配 ” 指的是一条记录满足特定的逻辑条件;在搜索引擎中,“ 匹配 ” 指的是文档从统计规律上满足条件,甚至文档都不需要包含所有的查询关键词。数据库系统要返回所 有满足条件的结果,而搜索引擎返回一定数量的满足条件的通过相似度排序的结果。数据库系统对每条记录都提供一个主键,可以通过主键来访
16、问该记录,而对于搜索引擎来讲,每一个查询都可能有成千上万条记录和其相关度大于 0。所以,尽管搜索引擎无需做类似数据库的连接等操作, 但 要 对查询 达到很高的响应速度是非常困难的,特别是 在 当关键词要检索涉及 大量的文档,每篇文档中又包含有大量的短语 的情况下 。 搜索引擎面 临的挑战促使了一系列新的算法和数据结构的诞生,包括文本索引的表示,文本索引的构建技术,文本索引算法的评估等等。主流的 Web 搜索引 擎提供的基于这些技术的索引在快速响应方面起到了关键的作用。通过合理的压缩和组织结构,索引所需的空间和磁盘的负载以及检索时消耗的系统资源已经降低到了和以前相比很小的一部分。 1.1.4 X
17、ML 可扩展标记语言 天津大学 2007 届本科生毕业设计(论文) 3 在 1998 年 2 月, XML 被引入软件工业界,他给整个行业带来了一场革命。XML 提供了一种用来结构化文档和数据的通用且适应性强的格式,它不仅仅可以用在 Web 上,更可以推广在几乎任何地方。 XML 的基本思想是用标记表示数据的意义而不是像 HTML 仅用标签表示数据的显示方式。将内容和形式相分离是 XML 的重要特点,数 据以 XML 的形式编码使得 Web 服务和应用程序以一种简单有效的格式提供信息,这简化了程序服务之间的交互过程。并且 XML不采用固定的标记集合,用户可以根据需要定义任何一种标签来描述文档的
18、数据元素。 XML 具有四个主要特点 。 简单性 扩展性 操作性 开放性 现在的数据大多数还都存储在关系型数据库中,但是正如前文提到的,关系型数据库对于非结构化数据处理方式不够灵活,而 XML 处理数据的灵活方式使得 其在处理非结构化数据上有着先天的优势,所以关系型数据库逐渐开始使用 XML 来存储 和管理 非结构化数据。现在,在 SQL/XML 标 准中 XML 类型还被作为关系型数据库数据的标准类型 , 半结构化或者没有 Schema 的数据可以被存储到这种 XML 类型列当中,并通过 XQuery 来查询相关的数据 5。 1.1.5 NoSQL 数据库 技术 现代互联网飞速的发展带来了海
19、量的数据,交互式的在线服务的需求不断发展,用户不断的增多,这要求应用必须高度的可扩展,如果采用关系型数据库,如 MySQL,应用可以快速的开发出来,但是当用户规模扩大到数以百万计的时候,就需要重新设 计基础存储结构。而且应用必须面向用户,开发周期必须短,投入市场必须快。最重要的是,服务必须响应迅速。所以,存储系统必须低延迟。同时,数据必须对用户来说是持久可见的,用户对数据的修改必须立刻体现并且持久存在。最后,这些服务必须保证高可用,用户可以 24/7 获得服务。 为了满足上述的需求,关系型数据库提供了很多方便的功能来满足应用的需求。但是关系数据库很难扩展到数以亿计的用户规模。 NoSQL 数据
20、库例如Google 的 BigTable6, Apache Hadoop HBase7, Facebook Cassandra8等等都提供了高可扩展性,适合远距离传递数据,而且保证低延迟。而且现在的 NoSQL数据库如 Google 的 MetaStore9除了提供高可扩 展性以外,还对 NoSQL 数据库天津大学 2007 届本科生毕业设计(论文) 4 做了很多关系型数据库的特点,采用同步数据复制来提供高可用性,采用统一的数据视图,而且对远距离低延迟传输支持完整的 ACID 模式,来方便交互式应用的开发。 1.2 研究目的及意义 论 文的目的是 设计一个针对多种格式文档进行处理的可扩展的应用
21、服务框架,并在框架中实现对文档的全文和元数据的存储,索引和检索等服务 。 首先需要设计一个 系统框架 ,使得 系统 可以 通过统一的 方式 对上层应用提供服务,按照统一协议接受请求和返回数据, 并且 要 便于对 现有 服务进行修改和扩展 ,使得逻辑和具体实现分离。 其次,需要在 设计好的框架内实现具体的服务。目前 需要实现的服务包括 对多种格式(如 PDF, WORD)等文档进行内容抽取,全文检索 。同时,系统要能够对用 XML 描述的文档的原数据进行 存储 , 管理和查询等 ,实现同时支持文档的全文检索和元数据查询。 1.3 研究现状 1.3.1 基于关系数据库的 文档存储检索 方案 文档属
22、于非结构化数据,对于存储在关系型数据库中的非结构化数据, 目前的主流数据库提供商( IBM10, Microsoft11,Oracle12)都实现在 SQL 的关键词查询 SQL CONTAINS()扩展, 支持指定内容的全文检索。 并且也支持 XQuery的 contains()。 在 XML 出现之后,其结构和内容分离的形式 使其 非常适合 作 为描述类似文档的非结构化数据的基础 。文章 13提出了可以将关键词检索集成到XML 检索语言当中去。在 XQuery 规范中 14,基于文本内容的关键词检索是支持的,用户可以显式的在文档内部特定的部分来检索特定的关键词。这样,用户就可以提交类似 $
23、document/footnote contains “xml” 的查询。这样就可以根据用户的需求只在文档的页脚中检索 xml一词。这种形式的检索不仅能够向经典的全文检索一样返回文档和关键词的位置,而且 能够返回进一步进行 XQuery所需要的结点信息。这种检索从能力上讲远远超过了传统的信息检索,它使得关键词检索,结果过滤和传递融为一体,完成了文章 15中描述的愿景。 1.3.2 非关系型数据库 解决方案 此外,近年来热门的 NoSQL 技术是另一个研究的热点。 NoSQL 数据库的出发点是:非结构化,分布式,开源,横向可扩展。 NoSQL 的最初目的是做现代网络规模的数据库。从 2009 年
24、至今, NoSQL 在迅速的发展着,同时越来越多的特点被考虑进来:无需 schema,便于数据迁移,简单的 API,海量的数据天津大学 2007 届本科生毕业设计(论文) 5 存储。迄今为止,已经有很多成功的 NoSQL 数据库出现,并且已经被很多大型网络公司所采用,如列存储的 Hadoop/HBase7, Amazon SimpleDB16,文档存储的 MongoDB17,对象数据库 Versant18, XML 数据库 Sedna19等等。例如Google Megastore20便是其中之一,其突出特点有: Megastore 建立在 Google 的 BigTable 之上,支持单一数据
25、中心的容错存储; 异 步的数据复制,对远距离数据传输做优化; 将数据分布在大量小的数据库之中,每一个小的数据库都有独立的 log; 支持一致性; 层次化的表结构; 出色的备份和恢复能力等。 所以未来的海量数据存储可以脱离开关系型数据库的种种约束,转而采用NoSQL 的思想去解决问题。 1.3.3 信息检索技术 信息检索是研究文档搜索的研究领域,主要包括文档内部信息,以及和文档相关的原信息 (metadata)的检索。第一个自动信息检索系统出现在 1950 年到1060 年, 1970 年是的信息检索系统已经很够在数量巨大的文档中获得很好的检索 效率了。 1992 年,美国 Department
26、 of Defense 和 NIST 联合开始了 Text Retrieved Conference(TREC)会议,旨在促进信息检索系统的发展。互联网时代,网络当中的文档数量庞大,如何有效的抽取和检索成为了网络的重中之重。互联网时代的系统大都采用分布式管理,资源的为数字表达,多媒体化,载体多种多样。资源涵盖了社会各个领域,分 布 式 无序,缺少统一的规范和结构,特征抽取复杂,这导致了很多信息检索方法的转变,促成了新型的 Web 搜索的出现,如 Yahoo!和 Google。 目前,自 然语言处理技术不断发展,以及语义 Web 的不断研究,标识这信息检索将要进入一个新的阶段。目前信息检索技术正
27、往两个方向发展,一是从传统的文本检索向多媒体检索发展,提高传统文本检索的智能化,自动化,对新的多媒体内容进行检索。二是信息资源集中向网络化和分布化发展。面对Internet 上的海量数据,如何有效的存储和检索,提高准确率,也是当前研究的热点。 1.4 本文 结构 本文的绪论介绍了研究背景,研究目标和意义 以及研究现状。第二章介绍了 NoSQL 数据库 等论文使用的技术和算法 。第三章介绍了系统 的框架设计实天津大学 2007 届本科生毕业设计(论文) 6 现 方案。第四 章介绍 系统具体业务逻辑的设计和实现方案 。第五章介绍了实现系统的测试实验结果。第六章对全文总结并提出了下一步工作。 天津大
28、学 2007 届本科生毕业设计(论文) 7 第二章 相关 算法和技术 目前存在许多已经成熟的技术,对于实现 基于 NoSQL 技术的文档检索系统 十分关键,本章就这些技术做简要介绍。 2.1 NoSQL 技术 随着互联网的不断发展,信息量 正在以几何级数增长 ,其 中非结构化信息所占的比重也越来越高。现代计算机处理 的 信息已经 由 原来的结构化数据逐渐转变为结构化,半结构化和非结构化并存的海量数据 。因此,如何对非结构化数据进行更好的管理是一个越来越重要的 问题。传统的擅长处理结构化数据的关系型数 据库在面对海量的非结构化数据是已经显现出诸多的局限,开始制约系统对于数据规模的需求 ,而全文检
29、索数 据库系统在处理海量的信息检索上具有优势,但是在处理结构化数据, 做 关系运算时存在很多不足,难以满足复杂环境下的应用对数据存取的要求。因此,如何通过 NoSQL 数据库结合二者的优势去改进现有的非结构化数据存储检索方案显得尤为迫切。 2.1.1 CAP 理论 图 2-1 CAP 示意图 C: Consistency 一致性 A: Availability 可用性(快速获取数据) P: Tolerance of network Partition 分区容忍性(分布式) Eric Brewer 教授在十年前提出了著名的 CAP 理论,后来 Seth Gilbert 和Availability
30、 Partition Consistency 天津大学 2007 届本科生毕业设计(论文) 8 Nancy Lynch 两人证明了 CAP 理论的正确性。 CAP 理 论指出一个分布式系统不可能同时满足一致性,可用性和分区容忍性三个特点。在设计系统的时候,就要做出取舍,最多只能同时满足两个。如果关注高一致性,那就需要处理系统因为低可用性而造成的写操作失败的情况。而如果关注高可用性的话,就需要关注可能无法读取系统最新的数据。因此,根据系统 不同的关注点,需要采取的策略也不同,真正理解了系统的需求才是关键的问题所在,剩下的就是对CAP 理论进行应用,做好取舍工作,处 理好系统可能会因此出现的问题。
31、为了详细的说明这个问题,构造表 2-1 场景 。 表 2-1 场景 说明 符号 说明 N 同一份数据被复制的节点数 R 读取一份数据需要访问的节点数 W 写入一份新的数据操作结束前需要访问的结点数 为了保证强一致性, R + W N 必须被满足,这样才能保证读操作总是从至少一个已经存储了当前值的结点读取数据。如图 2-2 所示, N = 3, R = 2,且W = 2。 那么新的值 x2 被写到两个结点中,并且被从两个结点中读,那么结果最少也要覆盖一个结点,所以读操作一定能够访问到最新的数据,得到一致的结果。 图 2-2 强一致性示例 天津大学 2007 届本科生毕业设计(论文) 9 2.1.
32、2 NoSQL 数据库 在过去,关系型数据库几乎被用在了所有领域,由于其丰富完善的功能,出色的 Query 能力和完善的事务管理,几乎所有的任务都能够用关系型数据库完成。但是这些优点同样构成了关系型数据库的局限,因为它使得关系型数据库特别难以做成分布式存储和管理。特别是在事务管理和 Join 运算时,分布式会效率很低。现在出现了很多 NoSQL 数据库,它们有有限的功能集,不完整的 ACID 支持,但是特别适合用在分布式的环境下。这些数据库当前被称为NoSQL 数据库。 从 Google 趋势图 2-4 来看, NoSQL 从 2009 年 4 月出现以来已经成为了一个热点。 本课题需要设计和
33、使用 NoSQL 数据库,具体来讲, NoSQL 数据库和关系型数据库的关系可以如图 2-3 所示 。 数 据 库关 系 型 数 据 库N o S Q L 数 据 库K e y - v a l u e 数 据 库X M L 数 据 库文 档 存 储对 象 存 储图 2-3 数据库分类 NoSQL 打破了传统关系型数据库模式,这种数据库无需在存储数据之前实现定义好表的结构,也无需出现表的连接 和分割。 NoSQL 出现的根本原因在于应用对数据的可扩展性的要求。可扩展性在 Web 应用里指的是,如果应用可以运行在足够多的服务器上,那么在特定时间内,任意多的数据或工作负载都能被处理。在实际应用环境下
34、,很多情况都要面对高可扩展性的要求。比如Amazon 提出了 SOA 的概念,即 Service Oriented Architecture 来保证应用层能够扩展。 Amazon 将服务分类,不同的服务采用不同的存储模式。比如对于一致性要求高的数据,如交易数据, SOA 将它们放在 RDBMS(关系型数据库 )里,而其他的数据则可以放 在分布式存储的 NoSQL 数据库里,如 Amazon 的Dynamo, S3 或者 SimpleDB。 天津大学 2007 届本科生毕业设计(论文) 10 图 2-4 NoSQL 数据库热度 论文使用的 NoSQL 数据库有两个, Joafip 和 Sedna
35、。 Joafip 是一种基于NoSQL 思想的对象存储工具。能够将 Java 数据对象持久化到文件系统而不使用数据库。 Joafip 的优点有 如下。 容易使用 保证数据库 ACID 特性 面向对象,直接存储对象 支持多线程访问数据 将所有的对象存储在文件系统中,通过堆文件来记录对象实例 Joafip 的以简单的 key-object 形式存储 对象,在获取对象时同样通过 key 直接查找,非常便捷,适合作为本系统的全文索引部分的存储系统。 Sedna 是一个开源的免费原生 XML 数据库,提供了全功能的核心数据库功能,包括持久化存储, ACID 事务,索引,安全,热备等功能。 Sedna 实
36、现了W3C 的 XQuery 规范,支持 XQuery 查询。 2.2 基于关键词的全文检索 在过去的十几年中,文本搜索引擎获得了巨大的发展。一系列新的索引表示方法推动了包括 index 存储, index 构建和 query 评估等一个广泛领域的不断创新。文本检索是文本搜索引擎的核心技术,也是当 前整个信息检索领域的核心技术。搜索引擎索引整个 Web 互联网,提供了一种快速便捷的访问信息的方式,而这在十年前还是不可想象的。而且文本检索还在其他的方面起到了关键作用,比如在操作系统中为很多应用提供了高效的文本搜索,为桌面用户提供桌面搜索,以帮助用户在 PC 上快速定位他们的文件。 搜索引擎在结构
37、上很类似与数据库系统,文档被存储在仓库里,系统维护天津大学 2007 届本科生毕业设计(论文) 11 一个文档的索引。用户向系统提交查询,系统处理用户查询,找到匹配的项,然后返回给用户。但是,二者有很多不同的地方。数据库系统必须构建比较复杂的结构化的查询,而大部分的搜索引 擎接受的查询是一些短语和词组的结合。在数据库系统中, “ 匹配 ” 指的是一条记录满足特定的逻辑条件;在搜索引擎中,“ 匹配 ” 指的是文档从统计规律上满足条件,甚至文档都不需要包含所有的查询关键词。数据库系统要返回所有满足条件的结果,而搜索引擎返回一定数量的满足条件的通过相似度排序的结果。数据库系统对每条记录都提供一个主键
38、,可以通过主键来访问该记录,而对于搜索引擎来讲,每一个查询都可能有成千上万条记录和其相关度大于 0。所以,尽管搜索引擎无需做类似数据库的连接等操作,要达到很高的响应速度是非常困难的,特别是关键词要检索的 是大量的文档,每篇文档中又包含有大量的短语。 因此,搜索引擎面对临的挑战促使了一系列新的算法和数据结构的诞生,包括文本索引的表示,文本索引的构建技术,文本索引算法的评估等等。主流的 Web 搜索引擎提供的基于这些技术的索引在快速响应方面起到了关键的作用。通过合理的压缩和组织结构,索引所需的空间和磁盘的负载以及检索时消耗的系统资源已经降低到了和以前相比很小的一部分。 2.2.1 文本索引查询模型
39、 典型的文本内容包括网页,报纸,学术出版物,公司财报 等。这些文本材料从内容和大小上看差异很大,例如一个科技工作者十年左 右写的论文如果用纯文本来计算可能有 10 兆字节左右,十年之内的邮件可能有 100 兆字节左右。一个小型的大学图书馆的藏书用纯文本来结算可能有 100G 字节左右,而截至到 2005 年互联网上的文本内容已经超过了 100T 字节。面对这么大规模的数据,就必须采取合适的查询模型才能满足快速响应且结果准确的要求。 传统数据库的主要检索方式是通过 key 或者记录标示。这种搜索很少用在文本数据库里。文本数据具有结构化属性,例如作者标签和其他元数据,比如学科,分类信息。但是这些信
40、息只在基于内容的检索中有用,并不能用在像关系数据库中的 key 那样使用。 主流的文本检索模型是检索满足信息需求的内容。用户通常可以用很多不同的方式检索所需的信息,一般首先提交一个初始的查询,然后不断的细化查询,直至系统返回正确的结果。如果查询的某一步不能返回正确的结果或者是范围,用户就需要修改查询的限定,来重新执行查询过程。这个查询过程中,信息需求是被体现在用户提交的查询词上,用户可能多次提交信息需求,直到查询到用户认为满意的结果。 天津大学 2007 届本科生毕业设计(论文) 12 信息检索系统另一个有别于数据库系统的是其对匹配的定义,在文本检索中,匹配是指用户认为其相关。但是相关性是一个
41、不准确的概念,因为可能一篇 文档根本不包含用户提交的关键词,但是内容可能是高度相关的。用户可能只能从系统返回的很多结果中找到一部分自己认为是相关的结果,而且不同的系统可能返回的结果很不相同。所以,检索系统定义了一个概念叫有效性:系统的有效性是指系统返回的前 r 个结果有效的结果占的比重。不同的系统对准确率和效率的权衡取舍都是不同的。 系统的有效性有很多不同的衡量方法,其中最常用的两种是精确率和召回率。分别指的是返回结果中有效的结果占得比重和返回的有效结果占所有有效结果的比重。系统对于有效结果的鉴别主要是通过内部相似度来衡量的。 2.2.2 相似度测量 算法 目前的搜索引擎都是通过 对结果的排序
42、 来衡量潜在的答案的。在一个排序的查询中,相似度是通过一个统计的相似度得出的,统计相似度用来衡量查询词句和每个文本之间的近似程度。所以,统计得出的相似值越大,系 统就认为这篇文档更加相关。下面通过一个相似度模型来具体说明 。 规定 表 2-2 的统计值 。 表 2-2 符号说明 符号 含义 , 短语 t 在文档 d 中出现的频率 , 短语 t 在 query 中出现的频率 包含短语 t 的文档数量 短语 t 在集合中 出现的总数 集合中文档的总数 集合中索引的短语总数 以上的统计值要满足如下的规则: 1、 在很多文档都出现的短语要给予更少的权重。 2、 在一篇文档中出现很多次的短语要给予更多的
43、权重。 3、 包含很多短语的文档要给予更少的权重。 典型的计算相似度的方法是计算在 n 维向量空间中 query 向量 和文档向量 的 cosine 值。 天津大学 2007 届本科生毕业设计(论文) 13 w, = ln(1+ ) ( 2-1) , = 1+ ln, ( 2-2) = ,2 ( 2-3) = ,2 ( 2-4) , = ,( 2-5) 对于一个给定的查询来说是固定的,因此其对文档排序的影响可以忽略。这组公式 的变体可以是不用对数表示,或者是在计算 w,的时候将 N 替换为max*+,或者是在查询词比较长的时候用 1+lnq,t去乘以 w,,或者是用不同的组合方式去组合 w,和
44、 w,,或者干脆将 w定义成为文档的长度或字数,等等。 通常,这些变体都用 w,衡量短语的倒排文档频率( IDF),把 w,作为衡量短语频率( TF),相似度通常都是 TFIDF 的公式。还有其他很多的变体公式基于统计学原理,而且在 TREC 中被证明是有效的,例如最著名的 Okapi 计算 。 , = ln(+0.5+0.5) (3+1),3+,( 2-6) , = (1+1),+,( 2-7) = 1(1)+) ( 2-8) , = , , ( 2-9) 其中, 1和 是参数,分别设为 1.2 和 0.75。 3也是一个参数,一般设为 ,所以表达式 (3+1),3+,假定为等于 ,; 和
45、是文档长度和平均文档长度。当文档集规模不是非常大时, 表 2-3 所示 的算法可以很好的完成查询检索过程 。 天津大学 2007 届本科生毕业设计(论文) 14 表 2-3 全文检索算法 对于查询 q,按照相关度高低顺序返回前 r 个和 q 相关的文档 1) Calculate , for each query term t in q. 2) For each document d in the collection, a) Set 0. b) For each query term t, Calculate or read , and Set +, ,. c) Calculate or re
46、ad . d) Set /. 3) Identify the r greatest values and return the corresponding documents. 2.3 XML 数据 的管理 针对 XML 数据,目前存在以下几种类型: XML 数据库 其特点是以自然的方式处理 XML,基本的逻辑存储单位就是 XML 文档,存储和查询 XML 数据都较为方便,是专门针对 XML 数据设计的数据库。 原有数据库基础上对 XML 实行扩展 这种方法是通过对 XML 文件和 现有数据库存储的形式二者之间建立映射关系,将映射之后的数据存储到现有数据库当中,利用现有的数据库出色的管理能力来
47、管理 XML 数据。这种方法的优点是无需改变现有的数据库管理系统,缺点是可能会丢失原 XML 数据的信息,失去数据的原貌。 混合 XML 数据库 混合数据库是结合了上述二者的特点,对现有的数据库管理系统进行扩展,使其支持 XML 数据,同时保持对传统方式的支持。 如何存储 XML 是一个重要的问题,因为底层的存储对上层查询等操作有着重大的性能影响 21。对于 XML 的存储,已有的存储策略主要有以下几种:基于文件的存储,利用 RDBMS(Relational DataBase Management System,关系型数据库管理系统 ),利用面向对象的数据库 ODBMS(Object-Orie
48、nted Database Management System, 面向对象的数据库管理系统 ), XML 数据库管理系统。 天津大学 2007 届本科生毕业设计(论文) 15 2.4 XQuery XQuery 是一种由 World Wide Web Consortium(W3C)为了满足对特定的XML 数据查 询的需求而设计的语言。与关系型数据不同的是, XML 数据是高度灵活的,不像关系型数据有特定的结构, XML 数据通常是难以预测的,松散的,自描述的。 正因为 XML 数据的结构是难以预测的,所以对 XML 数据的检索过程通常和典型的关系型查询不同。 XQuery 语言提供了这种需求的灵活性,比如, 可以构建 如下的 XML 查询 : 在未知深