- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
09搜索引擎(LuceneWebSpider)24
第9章 搜索引擎(Lucene+Web Spider)
在资源非常丰富的网络环境中,如何有效的搜索信息是一件困难的事情。为了解决该问题,于是出现了搜索引擎,例如Google和Baidu等搜索引擎。搜索引擎是一个比较特殊的技术行业,即技术门槛是非常高。在许多商业项目中都需要搜索功能,一般比较常用的是使用SQL语言实现搜索。但是在实现全文搜索时,除了选择购买Google等公司的搜索服务外,还可以使用Lucene全文搜索组件来开发。
本章将详细的介绍Lucene和Web Spider两个组件实现全文搜索的各个方面:关于Lucene和Web Spider两个组件的简介;如何为文件建立索引;如何实现查询和如何搜索网络信息等。
9.1 关于搜索引擎的基本概念
搜索引擎英文为Search Engine,其首先会根据一定的策略和方法、运用特定的软件程序搜集互联网上的信息,然后对信息进行组织和处理,最后将处理后的信息显示给浏览者。所谓搜索引擎系统是指为浏览者提供检索服务的系统。
9.1.1 关于搜索引擎描述
搜索引擎没有一个明确和精确的定义,一般会以其发展中的一些里程碑式应用为标记划分为三个阶段。
第一阶段搜索引擎:该搜索引擎以“雅虎”为代表,主要依靠于人工分拣的分类目录进行搜索。
第二阶段搜索引擎:该搜索引擎以“Google”为代表,主要依靠于机器抓取和采用超级链接分析技术进行搜索。与第一阶段的搜索引擎相比,其信息量大、更新及时和返回信息丰富。
第三阶段搜索引擎:该搜索引擎以“综合信息搜索服务”为代表,主要在第二阶段的基础上加入了“智能化”、“人机交互”、“自动分类技”、“中文内容分析”等技术,不仅提高了信息检索速度和更新频率,而且还实现了拼音纠错、模糊查询、语音查询等功能。
搜索引擎按照实现的方式,大致可以分成两大类:全文搜索引擎和分类目录搜索引擎。所谓全文搜索引擎一般通过网络机器人或网络蜘蛛工具,自动分析网络上的各种链接并将分析结果按规则整理,并同时存入数据库供显示使用。所谓分类目录搜索引擎则是通过人工的方式收集整理网站资料形成数据库。
在计算机上要表示信息获取流程,具体包含:信息的表示、信息存储、信息组织和信息访问。
首先需要创建进行检索的数据,用其构造文本数据库。
创建好文本数据库后,就需要建立文档的索引。Lucene全文搜索组件中是通过倒排索引的方法来创建索引。
创建好索引后,就可以进行检索。用户首先需要给出一个查询,该查询将被分析、然后利用文本处理技术进行处理。
最后根据用户的查询将会获取一些文档,即检索结果。在把检索结果反馈给用户之前,还可以对检索结果按照一定得次序排序,以符合用户需要的文档能够排在更前面。
9.2.2 关于搜索引擎基础知识
搜索引擎可以通过各种查询方法来实现信息的查询,比如顺序查询方法和索引查询方法。何为顺序查询方法呢?何为索引查询方法呢?
所谓顺序查询方法是指当用户进行查询时,对文档集合不做任何形式的预处理,而直接在文档中进行字符串的简单匹配。虽然该方式简单、容易实现,但是当查找的文件大小超过一定数量级别时,该方式的效率就不能满足实际需要。
所谓索引查询方法是指当用户进行查询时,查询的对象为对文档集合创建的特殊数据结构,该数据结构就是索引。该种方式只针对文档的信息相对稳定的情况,因为当文档中的信息发生变化时,还必须对索引进行更新。
注意:在具体实现时,通常是定期更新索引,同时把索引添加到原来的索引里。
当使用索引查询方式来实现搜索引擎时,首先需要对文档集合进行预处理,即建立索引结构。进行预处理的技术主要有三种:倒排索引、后缀数组和签名文件。其中后缀数组技术虽然在短语查询中具有很快的速度,但是在具体构造和维护时都很复杂;签名文件技术虽然在20世纪80年代时期比较流行,但是随着时代的发展逐步被倒排索引技术取代。Lucene全文搜索组件就是利用该技术实现对信息排序,该技术对关键词的搜索非常有效。
倒排索引是针对单词的索引结构,其结构由“词典”和“出现情况”两部分组成,使用的是“词到文档”的映射关系。为什么要叫倒排而不是正排呢?
如果为正排索引则应该使用“文档到词”的映射关系,其与具有“词到文档”映射关系的倒排索引相比,在“关键字”搜索方面具有很大的差距。为了便于讲解,将通过一个具体的实例来说明两种映射关系的差异。
现在存在两篇文档:文档A的内容为“We are chinese”;文档B的内容为“chinese is a big country”。如果建立的是正常的索引结构,其映射关系如表9.1所示。
表9.1 正常索引的映射关系
文档号 出现的单词 出现的次数 A chinese 1 B chinese 1 A We 1 …… …… …… 如果建立的是倒排的索引结构,其映射关系如表9.2所示。
文档评论(0)