一、什么是solr
首先,要了解下Solr是什么,以下是官方的描述。
Solr是一个来自Apache Lucence项目,是一个热门开源的企业级搜索平台。为目前世界上相当多的大型互联网站点提供搜索和导航服务。
[http://wiki.apache.org/solr/]
Solr使用Java语言写的,作为一个独立的全文检索服务器项目,可运行在如Jetty或Tomcat等servlet容器中。(Solr提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。) Solr在核心全文索引及搜索中使用Lucence的Java搜索类库,并且拥有REST风格的HTTP/XML 或JSON接口,使它很容易的在各种编程语言中使用。Solr强大的外部配置,允许为几乎任何类型的应用定制而不需要Java编码,而当需要更高级定制的时候,它的扩展插件机制就可以满足这一点。(可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。)
Solr的主要特性如下:
1. 强大的全文检索功能;
2. 高亮功能;
3. 面搜索功能;
4. 接近实时的索引创建;
5. 动态聚类;
6. 数据库整合;
7. 富文本处理,如 Word和PDF;
8. 空间搜索;
9. 高可靠性、伸缩性和容错能力。提供分布式索引,复制,和负载平衡的查询。自动故障转移和恢复,易于配置等;
10. 可扩展的插件扩展体系。
二、什么是Lucene
因为Solr是基于Lucence的扩展,所以也了解下Lucene。
Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。
Lucene 目前是 Apache Jakarta(雅加达) 家族中的一个开源项目。也是目前最为流行的基于Java开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于 Lucene ,比如Eclipse 帮助系统的搜索功能。Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。
官网:[http://lucene.apache.org/]
三、Solr vs Lucene
Solr与Lucene 并不是竞争对立关系,Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的。
Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。
Lucene本质上是搜索库,而Solr是独立的应用程序。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。 所以说,一句话概括 Solr: Solr是Lucene面向企业搜索应用的扩展。Solr使用Lucene并且扩展了它。
Solr与Lucene架构图:
拥有动态字段(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema)
对Lucene查询语言的强大扩展!
支持对结果进行动态的分组和过滤
高级的,可配置的文本分析
高度可配置和可扩展的缓存机制
性能优化
支持通过XML进行外部配置
拥有一个管理界面
可监控的日志
支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution)