Lucene初学(一)

本博文将以叙事性的方式描述我的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了(虽然跟书上还是有些不同)

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

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


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

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


上面,我讲了挺多废话的,没有提及到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初学者(二)》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值