- Solr和ElasticSearch一样,都是基于Lucene的搜索服务器。
- Solr 在传统的搜索应用中表现好于ES(搜索数据是现成的,不需要热更新),但在处理实时搜索应用时效率明显低于 Elasticsearch
- Solr更成熟稳定,支持多种格式的返回,而ES只支持json
- Lucene 是一个 JAVA 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作
Solr特点
- 先进的全文搜索功能(不同于数据库的like查询,会根据分词结果的匹配程度按照评分规则顺序展示)(支持引入特定的分词器)
- 多语言(中文分词:Ansj分词插件、IK等)
- 高性能搜索服务器:多主多从,主服务器异常时自动切换,读取的时候有负载均衡策略,Slave可以响应读请求,但是所有的写请求要转发给Leader
- 很强的容错性:Leader挂了,Slave可以顶上。全部挂了,还有持久化的日志,可以恢复数据。
- API支持关键词高亮、颜色显示等渲染形式
- XML,JSON和HTTP等结果返回形式
- 支持url命令、java API、管理界面等多种形式操作搜索服务器
- 集群环境支持配置路由规则, IBM!***,这样所有IBM!开头的数据源都会分配到一个Shard上
搜索原理
- 结合zk等注册中心,解耦和高扩展性
- 支持在solr配置好规则和数据源,从数据库导入数据,创建索引规则
- 根据分词器的分词规则,根据不同Master上的汇总,根据得分排序
- 可以根据配置,做一些高亮显示等等美化
网友评论