Solr 简介

ApacheTM Solr 是构建在 Apache LuceneTM 之上的搜索服务器,Apache LuceneTM 是一个开源的基于 Java 的信息检索库。Solr 旨在推动涉及非结构化数据、半结构化数据或非结构化和结构化数据混合的强大的文档检索或分析应用程序。它还对有限的关系、图形、统计、数据分析或存储相关用例提供二级支持。由于 Solr 是 Apache 2.0 许可的开源软件,专为可扩展性而设计,因此它使你能够自由地调整或优化它以适应几乎任何商业或非商业用例。

Solr 的 查询语法和解析器 提供对所有内容的支持,从最简单的关键字搜索到对多个字段的复杂查询和 分面 搜索结果。折叠聚类 结果为电子商务和店面提供引人注目的功能。 流表达式 允许你对整个语料库、与查询匹配的子集或一组文档中的随机样本进行分析。强大的 数学表达式 基于流表达式构建,为高级分析和预测分析用例提供支柱。

还支持高级相关性调整;Solr 提供对 Lucene 的几乎所有文本分析功能的访问,包括标记化、词干提取、同义词等等,使你能够根据对用户和域的了解来调整相关性。Solr 甚至允许通过机器学习使用 学习排名 功能来自定义相关性。

查询通过 HTTP 1.1 或 2.0 请求传输到 Solr,而响应通常是结构化文档描述符列表。在经典示例中,返回 10 个描述符,每个描述符都包括一个用于查找文档的 URL(通常显示为“10 个蓝色链接”)。但是,Solr 不仅限于文档定位器,还可能包含许多其他类型的文档元数据。灵活的架构配置允许将几乎任何类型的元数据与 Solr 中索引的文档相关联。索引指南的架构元素页面提供了有关这些选项的更多详细信息。

JSON 是默认响应格式,但它也可以是 XML、CSV、优化二进制文件,或者(通过自定义)您想要的任何格式。这意味着各种各样的客户端都能够使用 Solr。此类客户端可能是 Web 应用程序、浏览器、富客户端应用程序或移动设备。任何能够使用 HTTP 的平台都可以与 Solr 通信。为在常用编程语言中使用提供了多个客户端 API

除了提供基于 Lucene 的文档检索的网络可访问引擎外,Solr 还提供了超越单台机器限制的能力。可以使用两种Solr 集群类型之一对索引进行分片和复制以提高性能和可靠性。一种类型的集群不需要支持基础设施,并且实例由管理员直接管理。第二种类型使用Apache ZookeeperTM在整个集群中协调管理活动。

Solr 扩展和高可用性功能非常有效,以至于一些最大和最著名的互联网网站都使用 Solr。可以在https://cwiki.apache.org/confluence/display/solr/PublicServers找到部分通常是自提名网站使用 Solr 的列表。