什么是 Solr
Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr索引的实现方法很简单,用 POST 方法向Solr服务器 发送一个描述。
Field 及其内容的XML文档,Solr根据xml文档添加、删除、更新索引。Solr搜索只需要发送HTTP GET 请求,然后对 Solr 返回Xml、Json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
为什么使用 Solr
单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用。
通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统依赖紧密,不方便扩展,不建议采用。
基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为Solr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。
Solr的特性
-
独立的企业级搜索服务,基于http以类-REST API 对外提供服务
- 你可以通过http协议将文档以JSON/XML/CSV/binary格式发送给Solr进行索引。
- 你通过http GET 请求进行查询,可返回JSON/XML/CSV/binary格式的搜索结果。
-
近实时的索引能力
- 文档数据提交索引后,立马就可看到。
-
先进的全文检索能力
- 基于Lucene的强大搜索能力,支持任意数据类型的短语、通配、连接、分组等等查询
-
综合的管理界面
- Slor内建了综合的管理用户界面,让你方便的管理你的solr实例
-
通过简单的配置方式来提供高灵活性、适用性
-
高伸缩和容错能力
- 基于zookeeper,solr支持分布式、备份、再平衡,来提供高伸缩和容错能力
-
插件体系架构,易扩展
- Solr发布了许多定义良好的扩展点,这使得插件很容易插入索引和查询时的过程中。
Solr应用架构
Solr 和 Lucene 的区别
- Lucene 是一个全文检索引擎工具包,它是一个 jar 包,不能独立运行,对外提供服务。
- Solr 是一个全文检索服务器,它可以单独运行在 servlet 容器,可以单独对外提供搜索和索引功能。Solr 比 lucene 在开发全文检索功能时,更快捷、更方便。