Lucene
、
Solr
、
Elasticsearch
是目前主流的全文搜索方案,基于
倒排索引
机制完成快速全文搜索。
Lucene
Lucene
是
Apache
基金会维护的一套完全使用
Java
编写的信息搜索工具包(
Jar
包),它包含了索引
结构、读写索引工具、相关性工具、排序等功能,因此在使用
Lucene
时仍需要我们自己进一步开
发搜索引擎系统,例如数据获取、解析、分词等方面的东西。
注意:
Lucene
只是一个框架,我们需要在
Java
程序中集成它再使用。而且需要很多的学习才能明
白它是如何运行的,熟练运用
Lucene
非常复杂。
Solr
Solr
是一个有
HTTP
接口的基于
Lucene
的查询服务器,是一个搜索引擎系统,封装了很多
Lucene
细
节,
Solr
可以直接利用
HTTP GET/POST
请求去查询,维护修改索引。
Elasticsearch
Elasticsearch
也是一个建立在全文搜索引擎
Apache Lucene
基础上的搜索引擎。采用的策略是分
布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
三者之间的区别和联系
Solr
和
Elasticsearch
都是基于
Lucene
实现的。但
Solr
和
Elasticsearch
之间也是有区别的
1
)
Solr
利用
Zookpper
进行分布式管理,而
Elasticsearch
自身带有分布式协调管理功能
2
)
Solr
比
Elasticsearch
实现更加全面,
Solr
官方提供的功能更多,而
Elasticsearch
本身更注重于
核心功能,
高级功能多由第三方插件提供
3
)
Solr
在传统的搜索应用中表现好于
Elasticsearch
,而
Elasticsearch
在实时搜索应用方面比
Solr
表现好