[lucene]01.lucene介绍以及选定使用的版本
lucene是干什么的?
想要一句话说明白lucene是什么的,还真不太容易,就像别尝试着用一句话去阐释人生一样。lucene是用于全文检索的,这样说感觉还是离我们太远,举个例子,比如有个很多文件,我想找到哪些文件里面含有“乐之者cms”的缩写"lzzcms"或者中文"乐之者cms",你想到的是什么?难道是一个个的打开每个文件,ctrl+f来搜索,这不是一个程序员应该想到的,哈哈。这时候lucene就可以帮我们实现这个功能,再啰嗦一遍,就是说,lucene可以帮我们通过搜索、判断来确定文本文件中是否某个字符串,这种功能就叫做“全文检索”。
有没有我们熟悉的地方哪用到了?
那么,有没有我们熟悉的例子呢,记得以前我做项目的时候是用到过,不过因为很久了,再说公司的项目也没法演示出来,不过工作中还是会可能遇到的。现在我就举个乐之者java的例子吧:
搜索框中,输入要查询的内容,点击查询:
会列出前10篇含有“java”这个关键字的文章,这是如何实现的,就是通过lucene。
lucene和搜索引擎什么关系?
lucene是java的一个jar包,是全文检索的工具,不要跟搜索引擎混淆了。
好了,知道了lucene是干嘛的,我们接着就来看怎么来使用它吧。
知道lucene是什么之后,也就把大体的框架掌握了,学一个新东西一定要知道自己在学什么,一定要从整体上、大局上了解这个东西,然后才有所谓的细枝末节,我们就可以做几个例子,通过从简单的例子了解lucene的功能,于无形中你就能学会了,后边的那些高亮显示、提取摘要、提取关键词了自然不在话下。
我这里使用maven工程演示,如果你不想用maven工程,去下载下面列出的对应的jar包一样的,需要哪些jar包?
<!--lucene相关jar包--> <!--lucene核心jar包--> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>5.3.1</version> </dependency> <!--lucene检索jar包--> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-queryparser</artifactId> <version>5.3.1</version> </dependency> <!--英文分词器jar包--> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-common</artifactId> <version>5.3.1</version> </dependency> <!-- 高亮jar包--> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-highlighter</artifactId> <version>5.3.1</version> </dependency> <!--支持中文和英文的分词器jar包,替代上面的默认英文分词器--> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-smartcn</artifactId> <version>5.5.1</version> </dependency> <!--为了读取文件方便,这里才引入,不是lucene必须的--> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.0</version> </dependency>
我们看到,这里我使用的lucene的版本是5.3.1。lucene5之后的改动还是很好的,我记得以前我用的时候写程序代码还要指定lucene的版本,当时我还记得lucene是通过静态常量给出的,我当时就想,这兼容性岂不是太差了,难道程序还要跟版本搞上这么亲密的关系,需要吗?而且还要指定这么多,当时用着就感觉很不爽啊,还好现在后来的版本都修正了。好的,闲言少叙,jar包引进来之后,我们就来看看怎么一步步学会它吧。