Lucene6入门教程(一)简介和学习流程

工作中需要用到Lucene6这个全文检索工具,为项目的开发打下基础。花了比较多的时间熟悉了Lucene,原理,一些网上的案例,以及基本的API使用等,在这里给大家分享一下我关于Lucene6.4.1的学习心得。

   学习流程:网上案例——索引文件格式--创建索引--查询排序等

lucene介绍 :
Lucene是apache旗下的一个子项目,是一个开放源代码的工具包,是一个基础的全文检索引擎的框架,提供了高性能的查询引擎和索引引擎,以及部分文本分析引擎(英文与德文,部分中文)。
在基于它的基础上,还开发出了solr,Elastic Search(ES),Nutch,Katta,Index Tank,Sphinx,hibernate Search,Bobo Search,Summa,Compass,Constellio等较为出名的搜索引擎,并且,他们多为java语言编写。
尽管还有着这样那样的问题,但作为应用最广泛的搜索引擎,lucene自然拥有其自身的优势:
(1)开源搜索引擎,社区发达;
(2)文件格式独特,跨平台和兼容性强;
(3)倒排索引,分块索引,性能极强;
(4)低成本,上手快,足够小项目小公司使用;

学习流程:
(1)首先推荐你看看这篇Lucene6.6.0 案例与学习路线,讲得很详细,罗列了各种需要学习的东西:http://www.cnblogs.com/jetHu/p/7050544.html
(2)首先推荐你看看这篇入门的博文,里边是一个小程序,lucene6能用,上边是一个基本的创建索引和搜索的java代码,你只需要改改文件路径就好。
http://blog.csdn.net/ccdust/article/details/53447890
(3)需要代码的话,这篇博文比较好,能用,3.X,4.5,5等版本的都有,比较了一下lucene的改进,其中,lucene5版本的能跑6:
索引创建:http://blog.csdn.net/zpf336/article/details/45074721
搜索:http://blog.csdn.net/zpf336/article/details/45079319
索引域选项: http://blog.csdn.net/zpf336/article/details/45097975
检查/删除:http://blog.csdn.net/zpf336/article/details/45170965
(4)这个lucene入门教程还能看,你看一下这个大概的类就好。
教程: http://www.yiibai.com/lucene/lucene_indexwriter.html
(5)需要了解lucene内部原理的话,强烈推荐:
详细的:http://www.cnblogs.com/forfuture1978/category/300665.html
简单的:http://blog.csdn.net/ayi_5788/article/details/52131049
(6)API也是需要了解的,建议你去看看APACHE官网读一读Lucene的官方文档,然后再看看核心的API;
(7)这个的代码非常多,也很详细,但是不兼容的有点多
这个网址:http://blog.csdn.net/wuyinggui10000/article/details/45538155

与搜索引擎比较
lucene只是一个索引引擎/查询引擎/部分分析引擎的工具包,不能抓取没有的网页等,而百度或者谷歌的搜索引擎是一个可用的软件,实时性要求更高。
与数据库比较
比如说mySQL,MongoDB这些数据库相比,Lucene可以看成是一个拥有搜索功能的数据库系统,而数据库也有索引,二者有什么不同呢。
(1)功能不同。MongoDB等数据库,主要功能是存储结构化、非结构化数据,数据的写入写出是大头,而Lucene则是强化了了搜索功能弱化了存储功能。
(2)索引的数据结构不同。我们都知道,搜索引擎是采用从关键字到文件/档映射来搜索的,也就是全文搜索,词典和倒排表;而数据库则是采用B树(MySQL(B+树)/MongoDB(B-树)),虽然降低了了树的层次,但还是顺序搜索,不够快。
(3)Lucene有分词引擎,而数据库没有这个功能。

                    希望这些对你有所帮助
阅读更多
想对作者说点什么? 我来说一句
相关热词

没有更多推荐了,返回首页