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初学者(二)》

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

Lucene学习笔记之评分机制

Lucene in Action中Lucene评分公式:                                                                       ...
  • qq_31839751
  • qq_31839751
  • 2016年08月21日 16:49
  • 409

Lucene入门教程(一)

在这里分享一下Lucene的学习,主要参考官网上的一下教程和PDF版的《Lucene In Action》。当然,博客中很多内容都是摘自上面两个地方。 1. 什么是Lucene         L...
  • jolingogo
  • jolingogo
  • 2013年10月29日 20:00
  • 3421

搜索学习入门--使用LuceneHighlighter高亮显示Lucene检索结果的关键词

在上一篇文章搜索学习入门–Lucene初体验(Lucene索引的增删改查)d的基础上,我们进行对Lucene检索结果的高亮显示。 第一步:在增加Lucene高亮模块依赖 org.apache....
  • qq_18860653
  • qq_18860653
  • 2017年11月21日 15:43
  • 166

初学lucene

 首先分别new 一个Document,IndexWriter,Field, 然后用Doument.add()方法加入Field. 其次用IndexWrtier.addDocument()方法加入Do...
  • xiaoping8411
  • xiaoping8411
  • 2008年07月09日 15:49
  • 847

lucene的分组(group by)

原文地址:http://xtuhcy.iteye.com/blog/1143440   最近在优化搜索服务,以前的搜索服务十分简单,现在需要增加查询结果分组统计的功能,以提高用户体验。 g了一番...
  • wyyl1
  • wyyl1
  • 2012年03月23日 17:44
  • 2195

lucene打分机制

最终匹配分值score = 查询语句在N个域中的得分之和 * coord的值 每个域中的得分 = queryWeight * fieldWeight queryWeight = idf * qu...
  • hu948162999
  • hu948162999
  • 2015年11月12日 16:49
  • 1204

SSM(二)Lucene全文检索

前言 大家平时肯定都有用过全文检索工具,最常用的百度谷歌就是其中的典型。如果自己能够做一个那是不是想想就逼格满满呢。Apache就为我们提供了这样一个框架,以下就是在实际开发中加入Lucene的一...
  • qq_18661793
  • qq_18661793
  • 2016年07月08日 14:31
  • 2685

Lucene初学Demo

不跟你多BB,直接上代码: 这个Demo是使用Maven构建的。 创建Lucene索引的Indexer类: package com.java.lucene; import java.io.File;...
  • lifupingcn
  • lifupingcn
  • 2017年03月22日 16:55
  • 855

lucene 4.6.0 初学,

lucene初学, package com.test.lucene; import java.io.File; import java.io.FileReader; import ja...
  • bjl373842798
  • bjl373842798
  • 2014年07月10日 09:14
  • 866

【lucene初学】lucene4.2.1

背景:下阶段工作需要实现全文检索功能,查阅信息决定以lucene实现 使用版本:lucene-4.2.1 下载地址:http://mirrors.cnnic.cn/apache/lucene/...
  • xuexin8625
  • xuexin8625
  • 2013年04月27日 14:12
  • 1533
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lucene初学(一)
举报原因:
原因补充:

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