1 / 14
文档名称:

推荐教程.docx

格式:docx   大小:32KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

推荐教程.docx

上传人:wz_198613 2019/1/10 文件大小:32 KB

下载得到文件列表

推荐教程.docx

文档介绍

文档介绍:Apache Lucene
介绍:
Apache Lucene是一个基于 Java 的全文检索工具包,你可以利用它来为你的应用程序加入索引和检索功能。Lucene目前是著名的 Apache Jakarta 家族中的一个开源项目,也是目前最为流行的基于 Java 开源全文检索工具包。
 
第一部分:概述
我们在很多地方都可以看到搜索功能
Windows系统中的有搜索功能:打开“我的电脑”,按“F3”就可以使用查找的功能,查找指定的文件或文件夹。搜索的范围是整个电脑中的文件资源。
Eclipse中的帮助子系统:点击HelpàHelp Contents,可以查找出相关的帮助信息。搜索的范围是Eclipse的所有帮助文件。
在BBS、BLOG等系统中提供的搜索文章的功能,如这里的贴吧的例子。搜索的范围是系统内的文章数据(都在数据库中)。
搜索引擎,如Baidu或Google等,可以查询到互联网中的网页、PDF、DOC、PPT、图片、视频等。下图是使用百度搜索的效果:
以上的查询功能都类似。都是查询的文本内容,都是相同的查询方式,即找出含有指定字符串的资源,不同的只是查询范围(分别为硬盘、所有帮助文件、数据库、互联网)。
什么是全文检索
对于搜索,按被搜索的资源类型,分为两种:可以转为文本的、多媒体类型。我们上一节提到的搜索功能都是搜索的可以转为文本的资源(第一种)。注意,百度或谷歌提供的音乐或视频搜索不是多媒体搜索,他们是按文件名搜索。在智能手机上有一款音乐搜索的软件,可以让他听10秒钟的音乐,然后他就能上网找出这段音乐的名称、演奏者等信息。这是多媒体搜索。
按搜索的方式,上一节提到的搜索功能都是不处理语义,只是找出包含指定词的所有资源(只对词进行匹配)。下图就是显示“中国的首都是哪里”这个搜索要求对应的结果,可以看到,是没有“北京”这个结果的,结果页面都是出现了这些词的网页:
全文检索(Full-Text Retrieval)是指以文本作为检索对象,找出含有指定词汇的文本。全面、准确和快速是衡量全文检索系统的关键指标。
关于全文检索,我们要知道:1,只处理文本。2,不处理语义。3,搜索时英文不区分大小写。
4,结果列表有相关度排序。
在信息检索工具中,全文检索是最具通用性和实用性的。
学完后能做什么
我们使用Lucene,主要是做站内搜索,即对一个系统内的资源进行搜索。如BBS、BLOG中的文章搜索,网上商店中的商品搜索等。使用Lucene的项目有Eclipse、Jira等。一般不做互联网中资源的搜索,因为不易获取与管理海量资源(专业搜索方向的公司除外)。
所以,学完Lucene后我们就可以为自已的系统增加全文检索的功能。跟这个学****内容相关的练****为:为“传智手播客贴吧”增加搜索其中的文章的功能。
全文检索不同于数据库搜索
全文检索不同于数据库的SQL查询。(他们所解决的问题不一样,解决的方案也不一样,所以不应进行对比)。在数据库中的搜索就是使用SQL,如:SELECT * FROM t WHERE content like ‘%ant%’。这样会有如下问题:
匹配效果:如搜索ant会搜索出planting。这样就会搜出很多无关的信息。
相关度排序:查出的结果没有相关度排序,不知道我想要的结果在哪一页。我们在使用百度搜索时,一般不需要翻页,为什么?因为百度做了相关度排序:为每一条结果打一个分数,这条结果越符合搜索条件,得分就越高,叫做相关度得分,结果列表会按照这个分数由高到低排列,所以第1页的结果就是我们最想要的结果。
全文检索的速度大大快于SQL的like搜索的速度。这是因为查询方式不同造成的,以查字典举例:数据库的like就是一页一页的翻,一行一行的找,而全文检索是先查目录,得到结果所在的页码,再直接翻到这一页。
所以数据库搜索不能替代全文检索。
第二部分:入门
基础概念1(HelloWorld前)
全文检索就如同ORM,是一个概念。ORM的框架有很多种:Hibernate、TopLink、iBatis等,我们之前学****的是Hibernate。同样的,全文检索领域中也有多种框架,Lucene就是其中的一个用开源的全文检索框架。
Lucene的主页为:http://lucene./。。以下两小节是Lucene中重要的概念。
全文检索的工作流程
如果信息检索系统在用户发出了检索请求后再去互联网上找答案,根本无法在有限的时间内返回结果。所以要先把要检索的资源集合放到本地,并使用某种特定的结构存储,称为索引,这个索引的集合称为索引库。由于索引库的结构是按照专门为快速查询设计的,所以查询的速度非常快。我们每次搜索都是在