全文检索中的索引策略-倒排索引
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程考试(论文)
作业(论文)题目: 全文检索中的索引策略 所修课程名称: Ajax 技术 修课程时间: 2011 年 03 月至 2011 年 05 月 完成作业(论文)日期: 2011 年 06 月 评阅成绩: 评阅意见:
评阅教师签名: 年 月 日
____计算机科学____系____08____级____软件工程____专业 姓名____**____ 学号____2008090112____
………………………………(密)………………………………(封)………………………………(线)………………………………
基于HibernateSearch+Ajax全文检索中的索引策略
**
(四川文理学院计算机科学系,四川 ** 123456)
摘要:本文主要讲解全文检索中的索引的种类、发展、实现原理。索引文件有多种组织形式,其中以正排表、倒排表、后继数组模型以及互关联后继数组模型比较常用。下面主要详细列举介绍Lucene倒排索引的组织形式以及实现原理。
关键词:索引;搜索引擎;全文检索;Lucene倒排索引;实现原理;
Based on HibernateSearch + Ajax full text search the
index of the strategy
**
(Department of Computer Science, Sichuan University of Arts and Science, **123456,China)
Abstract:
this paper explained the index of the full text search the kinds, development and realize the principle. The index file have DuoZhong organization form, among them with are row watch, inverted table, subsequent array model and mutual association subsequent array model is commonly used. Below are the main detailed introduced Lucene inverted index the form of organization as well as the realization principle.
Key words:index; Search engine; Full text search; Lucene inverted index;
1引言
使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。
索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
在搜索引擎实际的应用之中,有时需要按照关键字的某些值查找记录,所以我们是按照关键字建立索引,这个索引我们就称之为——倒排索引,而带有倒排索引的文件我们又称作——倒排索引文件,也可以叫它为——倒排文件,来实现快速的检索与高速的效率。
基金项目:四川**学院2011年科研项目(2011B02Z);2011年四川省教育厅重点项目(11ZA172)
作者简介:**(1989-11-15),男,汉族,四川巴**市人,本科在读,研究方向为软件工程。
2 索引在中文检索中的位置及研究现状
全文检索是指计算机索引程序通过扫描文章中的每一个词,给每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
在上段全文检索的叙述中提到了索引,为什么要建立索引?索引对于全文检索到底意味这什么?在Otis Gospodnetic和Erik Hatcher的lucene in action一文中提到“在搜索引擎的所有概念中最为核心的概念就是索引,索引就是把原始的数据处理成一个有利于高效检索的数据形式。”他们就为什么要进行索引给出了具体和形象的说明:“假如你需要在很大量的文中进行某个特定信息的检索,并且你想在非常短的时间内找到含有需要信息的文件,你会怎样写程序实现这些?最简单的方法是顺序扫描所有的文件寻找给定词和短语,但这种方式有一些缺点,其中最致命的是当文件很大时根本没有足够的空间来存储该文件,这就是为什么需要索引了,为了在大量文本中检索到所需要的信息,首先必须把源文本集转换成一另一格式的文件,这种格式的文件能够让你进行快速的检索,而不是只进行很慢的顺序扫描。”这个转化的过程就是索引化,该过程输出的结果就是“索引气在上文中可以知道索引是全文检索的“心脏气下面的全文检索的模型结构图能够清晰的说明索引在全文检索中的地位。
下图即为全文检索的模型结构图:
图1-1全文检索结构模型图
全文检索系统是按照全文检索理论建立起来的用来提供全文检索服务的软件系统,一般来说,全文检索要具有建立索引和提供查询的功能。从上图中可以看出,全文检索系统中最为关键的部分是全文检索引擎,各种应用程序都需要建立在这个检索引擎之上。在检索引擎中可以看出索引引擎占据了核心的位置,他是整个检索效率的重要决定因素,一个全文检索应用的优异程度,根本上由全文检索引擎来决定。而全文检索的效率主要是由一个索引引擎所决定的。
2.1全文检索索引器的结构
在下图中可以看出一个索引器有三部分组成,第一部分是文本预处理模块,在该模块中针对给出的待索引的文本进行预处理,然后对经过处理的文本进行索引的建立,在索引建立后由于待查文档的改变要对索引尽心维护。索引维护主要涉及的问题是:源文档增加时将新的索引附加到原来的索引上,当源文档改变时,将其相对应的索引文件更新,但某些文档不在需要时,也要将其相对应的索引文件删除。 具体的结构图见图2-1:
图2-1索引器结构图
2.2 全文检索索引器的基本功能
一个中文全文检索的索引器应该实现三部分的功能。第一部分是文本预处理,一般需要检索的文档成分比较复杂,需要用文本预处理将文档中的中文,数字,符号,以及西文分开并归类然后分别对其建立索引。由于中文语言的复杂性在预处理这部分需要包括中文索引单位的选取,目前主流的有两类:一类是单字,一类是分词。
第二部分功能是创建索引,利用选定的索引数据结构对源文档遍历建立索引。 第三部分功能是实现索引的维护,包括索引删除,索引增加,索引更新。
3.几种常用索引以及实现原理
3.1.1一般索引(正排索引)
正排表是以文档的ID 为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。正排表结构如图3-1所示,这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护;因为索引是基于文档建立的,若是有新的文档假如,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。若是有文档删除,则直接找到该文档号文档对因的索引信息,将其直接删除。但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。
外部接口
索引器
文本预处理
索引维护
外部接口
建立索引
文本数据库 索引数据库