Solr

Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

什么是 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 在开发全文检索功能时,更快捷、更方便。