Lucene初学(一)

原创 2015年11月19日 19:19:33

本博文将以叙事性的方式描述我的lucene学习过程,以此记录我的学习流程(也可以给读者作为参考。每周更新一次)



2015年11月16日,我的算法老师找到我说:“XX师姐有个四六级的语法分析,XX师姐有个金融的分析,你喜欢哪个?你之前不是对爬虫有兴趣吗?你可以试一下学Lucene,不论做不做得出成品,先学着试一下。你可以去看一下《Lucene搜索引擎开发进阶实战》这本书,然后装个Linux,在下面抓点网页来分析。” 于是我就去图书馆借了一本《Lucene搜索引擎开发进阶实战》,作者名字有点牛掰,是成龙,看起来挺年轻的。书是2015年1月出版的。对了,我没有装Linux,我直接在windows下用Eclipse学。

首先我看了一下开篇的“本书面向的读者”,上面有提到三类人适合看这本书:

①有Java基础,刚接触搜索引擎开发的在校学生和编程者

②在Lucene搜索引擎开发过程中遇到疑问的编程者

③在探索搜索引擎中层技术的开发人员


其实,我是冲着这本书比较薄去的,因为我有个习惯:在学校图书馆借了很多很多书后,感觉很满足了,然后放着不看了,三个月后就直接还了。所以一般借又薄、字体又清晰、作者年轻(这个其实也可以有,年轻作者的书少废话)、书里面样例(样图之类)多的。

这样一来,即便我借下来后没兴趣了,我至少还能看着图简单操作一遍。


然后开始进入学习阶段


这本《Lucene搜索引擎开发进阶实战》讲得还是比较浅显易懂的,开篇就能看得出来,而且作者也知道新手比较急于看到成品,所以开篇3页简单讲了一下搜索引擎的发展史,不枯燥。然后第4页直接就上代码了(够直接,学java的看得也挺舒服的),由于我之前我简单看过lucene的代码,而且也简单调用过,所以对于我来说比较轻松。(作者比较崇尚快速上手)

书上开篇是没有讲该用什么jar包的,所以,可以去百度搜索“lucene”,去apache官网下载就可以了,这里不多说。不过挺恶心的一点是,lucene的版本管理不太好,3.X版本与4.X版本差别很大,3.X版本的IndexWriter的用法也与4.X的大不相同,现在最新的是lucene5.3.1,但是与4.X又有很大的不同。所以,我推荐不要盯着代码看,一定不要盯着代码看,版本变化太大了,直接理解它的原理图就可以了。然后用什么实现不重要。

我上面所说的图是指书上的所有图,都要操作一遍,都要看一遍,然后在脑子里操作一遍。例如:P24页的Lucene架构和过程,P25的Lucene组件,这两个图非常重要,理解了他们能省很多事,无论使用3.X、4.X、还是5.X都能很快上手。

这里有一点要注意的,《Lucene搜索引擎开发进阶实战》作者在书中用的是3.X版本,而在书里提及到一个很实用的工具Lukeall,这个工具在网上目前我只能找到Lukeall4.7.1(http://www.open-open.com/lib/view/open1423108896451.html),所以我也只是下载了Lucene4.7.1,因为5.X版本对应的Lukeall下载不下来(工具在github有,https://github.com/DmitryKey/luke/releases)。我比较喜欢资料比较齐全的版本,所以我在试用了一下lucene5.3.1后就换成lucene4.7.1了(虽然跟书上还是有些不同)

书上有些细节我没有说出来,原因一是因为书讲得的确很浅显易懂,原因二我是结合网上的一些博客来学的,如:CSDN。

http://www.itxxz.com/Lucene/2015/0529/771.html


有一点其实比较重要,在下载lucene时一定要下载他的使用文档,因为网上的博客无法完全覆盖lucene的内容。看文档可以自己查,我英文阅读水平还算过得去,四级500多,六级426(但这个关系不大,平常多用翻译软件,接触的单词都是那一些,熟悉就好)。

哦,还有一点,作者毕竟比较年轻,书里讲的都是他的个人经验,以及对一些读者问题的回答,所以表面看上去会感觉书有点离题。(但我对他在书上提及的那些题外内容比较陌生,所以我当做是个人扫盲。其实,看起来还是比较轻松的,例如:里面有提及到该用SQL Server2005、SQL Server2008还是Oracal)另外,书上还是有些错别字或者一些比较浅显的逻辑错误的,不要在意,并不影响整体的学习。哦,还有,书上的代码有很多是重复的,所以也不要在意。虽然,作者的书上那些代码都委托在CSDN,要收费,但是其实自己敲也是差不多的。


上面,我讲了挺多废话的,没有提及到lucene的学习吗?不是的,其实我提及到了:

①lucene的版本的变化很大

②lucene对应有一个工具Lukeall,它要与lucene版本相一致,也不可以不完全一致。我现在用的是(lucene4.7.1==Lukeall4,7,1)

③重点学习lucene的原理


下面,我说说我在这几天的学习心得:

①lucene不是一个完整的搜索引擎,lucene是一种搜索的解决方案,就像百度、必应、google。当然,他们用的估计不是lucene,他们自己应该研发了一套新的方案。

②lucene不仅仅是java,在《Lucene搜索引擎开发进阶实战》上提及到lucene可以应用于C++之类的,我没试验过,不太清楚。

③lucene与数据库的类比

Directory--数据库的表记录

Field--字段

④在lucene的建立索引以及搜索内容中都应用到了Analyzer,我认为:在建立索引时,因为要做分词,所以当然要用到Analyzer分词;而在搜索的过程中,则是将输入的字符串进行拆分,然后再去搜索关键字。如:输入“java权威”,他会先按“java权威”去匹配,然后按“java”,然后是“权威”,这也差不多是百度、google等搜索引擎的小型化了。

⑤搜索引擎的分词是有不同的分词方案的,如果用lucene自带的StandardAnalyzer,只会将“java权威”分成“java/权/威”。书上有提及都林良益大大的中文分词IKAnalyzer,这个可以去百度搜一下。他可以分成“java/权威”



附注:

①书上虽然作者反复强调快速上手,快速实战,但是这本书跑题还是挺严重的,但是可以扫盲。书中凑字数的重复代码挺多的。我不太建议买这本书下来,如果学校有书可以借的话,可以借着看。有钱淫可以去买书。

②Lukeall这个工具一定要下载下来用,感觉还是挺不错的。





今周的分享就先到这里,如果下周我还有兴趣继续写博客的话,我会接下去写《lucene初学者(二)》

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java.lang.NoSuchMethodError: scala.Predef$.$scope()Lscala/xml/TopScope$;

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.$scope()Lscala/xml/TopScope$; ...

Spark Streaming 报错:NoSuchMethodError: scala.Predef$.ArrowAssoc

Spark Streaming 报错:NoSuchMethodError: scala.Predef$.ArrowAssoc 的解决办法及思路

lucene 4.3.1 初学小工程

  • 2013年06月27日 16:25
  • 3.94MB
  • 下载

Lucene初学(二)

本博文将以叙事性的方式描述我的lucene学习过程,以此记录我的学习流程(也可以给读者作为参考。每周更新一次) 唠叨:2015年12月3日,到目前为止我已经学习lucene有两周多了,为...

Lucene初学Demo

不跟你多BB,直接上代码: 这个Demo是使用Maven构建的。 创建Lucene索引的Indexer类: package com.java.lucene; import java.io.File;...

lucene 4.6.0 初学,

lucene初学, package com.test.lucene; import java.io.File; import java.io.FileReader; import ja...

开发自己的搜索引擎 lucene + heritrix

  • 2017年11月17日 11:06
  • 87.36MB
  • 下载

lucene-core-4.9.3,开源jar包

  • 2017年11月10日 10:59
  • 482KB
  • 下载

【Lucene】三个高亮显示模块的简单示例-Highlighter

Lucene针对高亮显示功能提供了两种实现方式,分别是Highlighter和FastVectorHighlighter 这里的三个示例都是使用Highlighter; 示例代码: packag...

Lucene索引文件查看工具lukeall4.7.1

  • 2017年10月26日 10:52
  • 11MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lucene初学(一)
举报原因:
原因补充:

(最多只允许输入30个字)