1 什么是Solr
Solr是Apache的顶级开源项目,它是使用Java开发的,基于lucene的全文搜索服务器。可独立运行在Servlet容器(Apache Tomcat或jetty)。
Solr相对lucene提供了更多的查询语句,提供了更多的性能优化。
Solr 对外提供标准的http接口来实现对数据的索引的增、删、改、查。在Solr中用户通过向部署在servlet容器中的Solr web应用程序发送http请求来启动索引和搜索。通过http以同样的方式返回响应,可配置xml,json 响应类型
2 Solr和lucene
Lucene是一个全文搜索引擎工具包,它是一个jar包,不能独立运行,对外提供服务。solr是基于lucene开发的。同时提供了更丰富的查询语言,实现了可配置,可扩展并对查询性能进行了优化,提供了完善的管理界面http/ip:port/solr
3 Solr和Elasticsearch
Elasticsearch是基于lucene基础上的搜索引擎。提供了:
分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
实时分析的分布式搜索引擎。
可扩展到上百台服务器,处理pb级别的结构化或非结构化数据。
目前维基百科使用Elaticsearch来进行全文搜索并作高亮显示关键词,以及提供search-as-you-type,did-you-mean等搜索建议功能。
Github使用Elasticsearch来检索超过1300亿行代码。等等
elasticsearch特点
分布式的,不需要其它组件,分发是实时的,被称为push replication
完全支持lucence的接近实时的搜索
处理多租户不需要特殊配置,而solr需要更多高级设置
采用gateway的概念,使得完全备份更加简单
各节点组成对等的网络结构,某些节点出现故障时会自动分配其它节点代替其工作
slor特点
solr有更大,更成熟的用户,开发和贡献者社区
支持添加多种格式的索引,比如html,pdf,office系列格式,json,xml,csv等
对已有数据进行搜索时,solr更快,但在建立索引时,搜索效率下降,实时搜索效率不高
随着数据量的增加,solr的搜索效率会变得很低,而elaticsearch没有明显变化
solr 的架构不适合实时搜索的应用。