Lucene简介

发表时间:2017-07-18 18:58:55 浏览量( 51 ) 留言数( 0 )

学习目标:

1、了解Lucene的历史

2、为什么要学习Lucene


学习过程:

一、Lucene简介

1、什么是搜索引擎

相信大家都经常使用谷歌或者百度到网上搜索自己想要的东西了,谷歌和百度都非常容易使用,你只需要输入简单的一些内容就可以得到我们想要的东西,但是简单的背后实现确实非常复杂,一个搜索引擎涉及的技术非常多。首先是由网络爬虫把全世界的网站的内容收集起来,然后还要对这些内容进行解析、分析获得有用的内容,然后把内容保存起来,并建立索引库,然后还得设计一个供用户搜索的界面,获得用户输入的搜索内容,并对内容进行分析,再从索引库中取得用户最想要的数据库,并以友好的方式展示给用户看。这样才是一个完整的搜索引擎,

2、Lucene简介

Lucene并不是一个完整的搜索引擎,它是一个具有高性能,可扩展的文本信息检索工具包,它本身并不是一个完整的项目,不可以独立运行,但是可以很方便的嵌入到你的应用程序里面,为你的应用程序添加一个高效的搜索功能,它的核心功能只是包括分析文本,建立索引库,并提供搜索功能,对于如何获得原始的内容,以及如何展示搜索结果等等的功能,Lucene本身是没有提供的,但是有很多第三方的技术可以提供这方面的功能。

Lucene是由Doug Cutting编写的,Lucene这个命名是Doug的妻子的中名,所以大家也不要查字典看看Lucene是什么意思了,在2001年9月,Lucene加入了Apache项目,目前Lucene有大量的子项目,大家可以到它的网站下载最新的版本,并查看最新的发展:

http://lucene.apache.org/

Lucene发展非常快,目前已经有很多开发者加入到Lucene这个团队进行开发了,最新的版本已经lucenen4.6版,

二、Lucene和数据库对比

从上面的对Lucene的简介可知,Lucenne的功能就是保存信息,以方便查找,我们之前学习的数据库也一样支持这样的功能,Lucene与数据库之间有什么不同吗?首先Lucene在一些软件系统里面还是有不可替代的作用,数据库是一个具有严谨数据结构的数据,除了有优秀的查询能力之外,还提供了事务,约束等等大量的功能,所以数据库依然是不可替代的。既然数据库这么强大了,那为什么还有使用Lucene呢?数据库在面对海量的查询时,尤其是对纯文本的模糊查询,效率是不高的,只能使用like关键字,like关键字是数据库查询里面最慢的了。而且数据库必须在设计阶段就定义后数据结构和类型,这样灵活性就很差了。Lucene的强项就是对海量的文本查询效率非常高,不过对频繁需要添加,修改和删除效率就不怎么样了,因为建立索引库是比较费时的,那么在我们的一些应用系统里面是不是确实需要使用Lucene,还得程序员自己去判断,也许使用数据库就已经可以解决问题了,那么就不需要使用Lucene了。


三、Lucene的衍生产品

    Lucene确实非常强大,但是直接使用API开发比较麻烦,而且大数据量一般会使用分布式的环境,不可能只采用一台服务器的,Lucene只是一个文本检索工具包,并不具有这方面的功能,于是就有一Lucene为基础开发的完成的支持分布式环境的产品。比较流行就有Solr和ElasticSearch

   Solr是一个高性能的基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。