02.Lucene实现全文检索
Lucene介绍
Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。
依赖配置
Lucene是开发全文检索功能的工具包,从官方网站(http://lucene.apache.org/ )下载Lucene4.10.3,并解压得到开发包。
常用核心包
- lucene-core-4.10.3.jar
- lucene-analyzers-common-4.10.3.jar
- lucene-queryparser-4.10.3.jar
Lucene的工作原理
- 原始文档
- 它是用户需要查询的数据,可以使数据库中结构化的数据,也可以是一些非结构化的文档
- 获得文档
- 对于硬盘上的文本文件,可以通过流的方式来获得文档的内容;对于pdf、doc、xls等文件可通过第三方提供的解析工具读取文件内容,比如Apache POI读取doc和xls的文件内容;互联网上的内容需要通过爬虫来获得,还有数据库中的结构化数据可以通过一般的方式获取
- 构建文本对象
- 该文本对象是对需要建立索引数据的一个抽象,可以往这个文本对象中添加很多的Field,最终这个文本对象会被持久化保存在索引库中
- 分析文档
- 分析文档所做的事情就是分词,根据分词来建立一个和Field对应索引
- 创建索引
- 顾名思义,创建索引就是根据分词结果建立索引并写入索引库的过程
- 索引库
- 索引库是文本对象持久化和索引保存的一个文件,也可以是一个内存索引库
查询索引的过程
- 创建查询
- 查询包含精确查询以及分词后查询,还有多种查询结果的一个组合
- 执行查询
- 创建查询的到的查询结果只是文本对象Document在索引库中的一个ID,还要根据这个ID来执行查询获得完整的文本对象
- 渲染结果
- 渲染结果并不是Lucene应该做的,而是View视图层应该考虑的事情