前言:lucene并不是像solr或elastic那样提供现成的、直接部署可用的系统,而是一套jar包,提供了一些常见语言分词、构建索引和创建搜索器等等功能的API,我们常用到的也就是分词器、索引目录管理、索引器以及几种搜索器。
这里我们会从lucene结构到实现逐一进行分析讲解
注意:基于lucene5.5.3,(只支持5.x版本,不支持5.x以下和6.x以上的lucene版本)
jar包集合下载地址:http://download.csdn.net/detail/eguid_1/9677589
一、lucene的基本结构
lucene 的主要功能由索引器和索引搜索器构成,所有的外围功能都为构建索引和搜索两个功能提供服务
1、索引器构成
搜索器由分词器、索引目录、索引文档构成
lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录)基于lucene5.5.2
(1)分词器构成
内置分词器:Lucene-analyzers-common-5.5.2.jar提供了多国语言的分词器
常用中文分词器:IKAnalyzer和庖丁
使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)
(2)索引目录构成
索引目录分为:文件目录和内存虚拟目录
补充:在大量实际应用中百万级别的数据量下文件目录和内存虚拟目录索引在性能上并没有太大差异
(3)索引文档
索引文档由多个索引字段构成,用于保存要索引的字段;
索引字段由字段名和字段内容以及权重值组成。
lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.2
(补充:文章或者其他内容用于构建索引字段,并赋予权重值,再将构建好的索引字段保存到索引文档,就可以用来搜索了,当然我们也可以将索引文档保存到索引目录,这样我们就可以使用搜索器来搜索这个索引目录中的索引文档)
2、索引搜索器构成
搜索器分为六种
(1)单词搜索
搜索单个关键字
(2)前缀搜索
按照对应的前缀进行搜索
(3)范围搜索
搜索指定一个范围
(4)语句模糊搜索
使用内置分词器或中文分词器对查询语句进行分词并根据分词结果模糊搜索
(5)条件模糊搜索
在语句模糊查询基础上加上OR或者AND进行条件搜索
补充:只支持OR、AND两种条件搜索
(6)组合搜索
可以组合上面几种搜索器进行混合搜索