一种全文检索技术的思路和实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河南农业大学

本科生毕业论文(设计)

题目一种全文检索技术的思路和实现学院经济与管理学院

专业班级信息管理与信息系统 2006级1班学生姓名刘盈凯

指导教师王彩霞

撰写日期: 2010 年 5 月 5 日

目录

1.引言 (1)

2.全文检索技术和系统开发的背景 (1)

2.1全文检索的概念和现状 (1)

2.2系统目标和技术架构 (3)

3.系统核心算法实现 (4)

3.1索引算法及其实现 (4)

3.2索引数据结构和索引数据存储算法 (9)

3.3索引模式实现方法 (11)

4.检索方法实现 (14)

4.1检索过程 (14)

4.2关键词高亮 (15)

结语 (15)

参考文献 (17)

ABSTRACT (19)

中文摘要

为了全面有效的获取到知识,从古到今人们一直在不断的探索各种不同的信息检索方式。本文从信息检索领域的一个小处即从本地文件系统出发的全文检索。本文正文部分首先对全文检索进行了介绍,分析了当前国内全文检索领域发展存在的问题,提出了笔者对全文检索的看法,并根据笔者的思路开发了一套较为完整的系统,在此基础上引出本系统的开发思路,通过流程图辅以实现代码和思路的方式,剖析了程序的核心思路和算法。重点讲述了系统在切词、建立索引、索引同步、检索过程等部分。本系统采用SrpingMVC框架,全面采用面向对象的方式进行开发,设计较为合理。在切词效率和检索效率方面性能优越。可以说是一个较为完善的中文全文检索系统。

关键词:信息系统,全文检索,倒排索引

1.引言

在图书馆学和情报学领域,信息被定义为事物(Thing)或记录(Record)。信息检索也并不是web所特有的一个研究课题,早在本世纪50年代,当计算机被图书馆等部门用于存储和管理文档时信息检索就作为一个研究领域而诞生了。随着计算机技术的飞速发展,各种全文检索产品也踊跃出现,但几乎所有的全文检索产品都被作为商业机密保护起来了,笔者在阅读了相关理论知识的基础上做了该领域具体的实践工作,并且形成了一个较为完善的全文检索系统,本系统切词采用正向最大模式切词,建立索引采用的是倒排索引技术,排序使用TF-IDF的统计方法,达到的目的就是简单,迅速,准确的找到用户所需要的信息。本检索系统采用java做为实现语言,采用WEB的方式进行信息检索,适用于各种实现静态化的网站系统和文本(包括html,txt,pdf,word)形式的文件系统。本文的索引策略参考了很多资料,其中也包括该领域比较有名的Lucene。总之,搜索将成为编程领域的热门话题。

2.全文检索技术和系统开发的背景

由于RDBMS自身底层结构的缘故使得它管理大量非结构化数据显得有些先天不足,特别是查询这些海量非结构化数据的速度较慢,在排序方面也存在非常严重的问题。而通过全文检索技术就能高效地管理这些非结构化数据。而全文检索技术正为了解决这些问题而产生的,全文检索是一个全文检索克服了RDBMS的模糊查找的局限性。具有快速,全面的特点。

本系统是在全文检索领域的一个尝试,由于知识水平的有限在一些较为关键的地方存在问题。本文将在后文中一一介绍。

2.1全文检索的概念和现状

一个站点内容积累在万级以上,站内全文检索就会是用户定位最主要的手段,而关键词检索是用户最熟悉的方法。因此基于数据库的传统WEB应用在全文检索需求还是很大的。

但是可怕的%like%数据库操作可能会吃掉数据库服务器90%以上的CPU。Oracle MSSQL等数据库服务器中数据库内置的全文检索基本上都不太适合WEB应用。而数据库另外一个的弊端在于对于条件简单的查询返回结果集非常大:数据库并不知道如何面向用户最关心的的头100条结果进行优化。根据以前的统计:头100条结果往往已经可以满足95%以上用户需求。

全文检索是一种将文件中所有文本与检索项匹配的文字资料检索方法。目前主流的RDBMS提供了全文检索的功能,检索的效率成了人们关注的重点,目前关系型数据库的检索一般是应用在进行字段查询的系统中,而非全文检索。全文检索是当前搜索引擎的核心技术之一,全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先简历的索引进行查找,并将查找的结果反馈给用户的检索方式。这种思想来源于书目索引。目前的全文检索尚缺乏对web后台数据库内容查询的支持,用户所需的深层次信息无法获得,这是一个web搜索引擎目前不能做到的,也是小型网站和信息系统正需要的。本系统在扩展到检索数据库方面留有接口。目前的全文检索大都是商业化的全文检索,web搜索引擎都是商业化的搜索引擎,因为其运营成本极高。另外一种越来越受到关注的全文检索是垂直搜索引擎,垂直搜索引擎可以实现行业内主题的精准搜索。近年来,情报界的学者已经对文献信息检索进行了大量的理论探讨与实践,本系统是在参考了大量的理论文章的基础上进行实践的。

目前主流的全文检索模型有倒排索引、署名文件、位图等,其中以倒排索引模型的综合性能最好,应用也最为成熟。本系统使用的是倒排索引模型。

2.1.1倒排索引

倒排索引是从数目索引中受到启发而诞生的,文本可以用一系列的关键词来描述。倒排索引为每个关键词建立一个索引,关键词是文本中的所有词(根据词库切词而得到)。本系统中使用word表来存储这些关键词,在关键词的属性中存放了本关键词在文章中的位置信息。基于关键词的的索引过程要借助于“词库”,从文本中分离出有意义的词,也就是去除无意义的词——“停止词”。这一过程通常被称为“切词”,对于中文来说,分词算法很不简单。这是索引过程中的关键技术。笔者将在后文详细介绍系统中的实现方法和存在的问题。

2.1.2按词检索方法

全文检索的方法主要分为按字检索和按词检索两种。按字检索式指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义词处理也相对容易。中文等亚洲文字则需要切分词,以达到按词检索的目的,关于这方面的问题,是当前全文检索技术尤其是中文检索技术中的难点,本系统在建立索引时为检索提供了较为便捷的方法,即通过TF-IDF算法排序实现和倒排索引的索引模型实现达到快速、准确查找到所需内容。

2.1.3 目前该领域的一些研究成果

目前最活跃的全文检索工具就是lucene,lucene是一个相当优秀的全文检索工具包,封装了大量的主要方法。在分词领域有中科院ictclas4j中文分词系统、IKAnalyzer、paoding、等开源分词工具包。这些都是优秀而且成熟的产品。与之相比本系统在切词性能上比IKAnalyzer快,但是比paoding慢,在检索速度上比lucene快。

2.2系统目标和技术架构

2.2.1系统目标

本全文检索系统是为了降低全文检索的难度,本系统适用于中小型不同架构实现静态化的网站系统和基于文件系统的信息系统,这个本系统的首要目的。二是达到面向中文的精确切词。三是保证快速查找到目标数据。这三方面对系统性能要求很高,就是系统应该在检索效率和质量上达到要求。系统本地运行一万组数据测试,每组平均长度为56个字符的情况下,分词用时1.17秒。这是一个比较优秀的成绩。同样的数据使用Lucene和IK分词器需要4.23秒。

2.2.2技术架构

本系统开发环境为:

相关文档
最新文档