Lucene
Lucene使用上更加灵活,但是需要自己处理搜索引擎系统架构,以及其他附加功能的实现。
Solr和Elasticserach
solr对lucene做了很多封装,是一个处于高层的框架,Lucene很多新特性不能及时向上透传,所以有时候可能发现需要一个功能,Lucene是至此的,但是Solr上看不到相关的接口的情况。
solr利用zookeeper进行分布式管理,而elasticsearch自身带有分布式协调管理功能。
solr比elasticserach实现更加全面,solr官方提供的功能更多,而elasticsearch本身更注重核心功能,高级功能多由第三方插件提供。
solr在传统的搜索应用中表现好于elasticserch,而elasticserach在实时搜索应用方面比solr表现好!(常见面试题)
总结
- 传统搜索
从静态数据库中筛选出符合条件的结果,这种结果往往是不可变得,静态的。(可选用solr) - 实时搜索
则是说用户对于搜索的结果是实时变化的。(可选用es)
个人感觉还是应该看数量多少,即使是实时搜索要是量不大,用solr也是可以的。 - Lucene
可以实现搜索,但是需要大量的开发工作,索引库的维护及优化,查询的优化等问题都需要我们自己来解决。(不推荐使用)