目录
一、lucene是什么
lucene是一个全文检索框架,为我们的web应用提供丰富的快速的查询数据的一个开源个工具框架。用户可以使用该框架来实现自己应用的搜索功能。类似于淘宝,京东首页的搜索框功能实现。
二、lucene解决什么问题
在没有lucene该类似框架之前,我们一般的web应用搜索是使用数据库的模糊查询来实现相关搜索的功能
数据库层次的搜索
使用mysql的模糊搜索 like
1、性能:小数据量情况下是可以满足,但是在大数据量(几万或者几十万)中性能会大大降低
2、准确性:mysql like 模糊查询的正确率不太高
3、搜索成功率:mysql 获取数据后不会进行相关度排序(热门搜索越多 得分越高也越容易查询到,
mysq没有需要自己手动进行处理(加一个相关字段等方式))
使用lucene针对这些大数据量的数据搜索会更快,并且lucene提供了多种形式的查询条件,能根据用户的应用来自定义使用多种方式进行查询。
全文搜索相关知识:https://blog.csdn.net/qq_18860653/article/details/78975556
java中的搜索引擎框架:https://blog.csdn.net/xinghuo0007/article/details/53692871
三、lucene技术概览
3.1、lucene的架构图
3.2、lucene的相关模块
分析模块 org.apache.lucene.analysis | 分词器定义、标准分词器的实现 各种各样的分词器实现 |
编解码模块org.apache.lucene.codes | 编解码模块 |
文档模块org.apache.lucene.document | 文档相关 进行存储文档内容需要进行封装成的相关对象 |
索引相关模块 org.apache.lucene.index | 索引相关 对文档模块中的对象进行创建索引的过程,主要由IndexWriter进行实现 |
搜索模块 org.apache.lucene.search | lucene中提供了多种查询对象实现类 QueryParser(查询条件),主要由IndexSearcher 对象进行查询操作 |
存储模块org.apache.lucene.store | 存储相关 索引的读写 |
Lucene的similarity模块 | 相关度排序以及打分操作 Lucene的similarity模块主要负责对相关性打分的实现 |