在学习Lucene之前呢,我们当然首先要了解下什么是Lucene.
0x01 什么是Lucene ?
Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供。
Lucene提供了一个简单却强大的应用程序接口,能够做全文索引和搜索,在Java开发环境里Lucene是一个成熟的免费开放源代码工具;
就其本身而论,Lucene是现在并且是这几年,最受欢迎的免费Java信息检索程序库。
Lucene最初是由Doug Cutting所撰写的,他贡献出Lucene的目标是为各种中小型应用程序加入全文检索功能。
Tips: 摘要来自维基百科 https://zh.wikipedia.org/wiki/Lucene
这里我们只需要知道Lucene是目前最为流行的基于 Java 开源全文检索工具包。
0x02 Lucene 是用来做什么的?
基于Lucene的著名项目
项目名称 | 项目描述 |
Apache Nutch | 提供成熟可用的网络爬虫 |
Apache Solr | 基于Lucenne核心的高性能搜索服务器,提供JSON/Python/Ruby API |
Elasticsearch | 企业搜索平台,目的是组织数据并使其易于获取 |
DocFetcher | 跨平台的本机文件搜索桌面程序 |
Lucene.NET | 提供给.Net平台用户的Lucene类库的封装 |
Swiftype | 基于Lucene的企业级搜索 |
Apache Lucy | 为动态语言提供全文搜索的能力,是Lucene Java 库的C接口 |
其实我们不难发现主要用途
- 可以用来编写网络爬虫
- 也可以用来实现网站后台的全文检索。
偶然发现这张图感觉挺不错的,在这里分享下:
搜索应用程序和 Lucene 之间的关系
Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的,Lucene 就能对你的文档进行索引和搜索。
0x03 Lucene 软件包分析
Lucene 软件包的发布形式是一个 JAR 文件,下面我们分析一下这个 JAR 文件里面的主要的 JAVA 包,使读者对之有个初步的了解。
Package: org.apache.lucene.document
这个包提供了一些为封装要索引的文档所需要的类,比如 Document, Field。这样,每一个文档最终被封装成了一个 Document 对象。
Package: org.apache.lucene.analysis
这个包主要功能是对文档进行分词,因为文档在建立索引之前必须要进行分词,所以这个包的作用可以看成是为建立索引做准备工作。
Package: org.apache.lucene.index
这个包提供了一些类来协助创建索引以及对创建好的索引进行更新。这里面有两个基础的类:IndexWriter 和 IndexReader,
其中 IndexWriter 是用来创建索引并添加文档到索引中的,IndexReader 是用来删除索引中的文档的。
Package: org.apache.lucene.search
这个包提供了对在建立好的索引上进行搜索所需要的类。比如 IndexSearcher 和 Hits, IndexSearcher 定义了在指定的索引上进行搜索的方法,Hits 用来保存搜索得到的结果。
0x03 搭建Lucene 开发环境?
相信你和我一样已经控制不住自己的洪荒之力想要写个demo来跑跑了,但是在此之前我们还是要先搭建好开发环境。
1. 首先我们需要找到Lucene的官网
Lucene官网:https://lucene.apache.org/
翻译内容如下:
Apache LuceneTM项目开发开源搜索软件,其中包括:
我们的旗舰子项目Lucene Core提供了基于Java的索引和搜索技术,以及拼写检查,高亮显示和高级分析/标记化功能。
SolrTM是一款使用Lucene Core构建的高性能搜索服务器,具有XML / HTTP和JSON / Python / Ruby API,高亮显示,多面搜索,缓存,复制和Web管理界面。
PyLucene是Core项目的Python端口。
2.点击上图中的Download 按钮,会跳转到这个下载页面
Tips: 这里存在很多镜像下载链接,我们选择推荐的下载链接下载即可。
Lucene常识总结以及小demo总结
http://www.imooc.com/article/21946
附录:
推荐优秀博文:
https://www.ibm.com/developerworks/cn/java/j-lo-lucene1/
推荐视频实战教程:
基于Lucene4.6+Solr4.6+Heritrix1.14+S2SH实战开发从无到有垂直搜索引擎
网盘地址:https://pan.baidu.com/s/1nwkAamt 密码: 9ang
备用地址(腾讯微云):http://url.cn/5CmEW7s 密码:p8TmhQ