codecamp

Solr快速概述

Solr 是一个基于 Apache Lucene 之上的搜索服务器,它是一个开源的、基于 Java 的信息检索库。它旨在驱动功能强大的文档检索应用程序 - 无论您需要根据用户的查询将数据服务到何处,Solr 都可以为您服务。

下面是一个如何将 Solr 集成到应用程序中的示例:

Solr与应用程序的集成

在上述情况下,Solr 与其他服务器应用程序并行运行。例如,在线商店应用程序将提供用户界面、购物车以及为最终用户购买的方式;而库存管理应用程序将允许商店员工编辑产品信息。产品元数据将保存在某种数据库以及 Solr 中。

Solr 可以通过以下步骤轻松地添加在在线商店搜索的功能:

  1. 定义一个模式。该模式告诉 Solr 关于它将被索引的文档的内容。在在线商店的示例中,模式将定义产品名称、描述、价格、制造商等定义的字段。Solr 的模式是强大而灵活的,可以让您根据自己的应用程序定制 Solr 的行为。有关详细信息,请参阅文档、字段和模式设计。
  2. 您的用户将搜索的 Feed Solr 文档。

  3. 在您的应用程序中公开搜索功能。

因为 Solr 是基于开放标准的,所以它是高度可扩展的。Solr 查询是简单的 HTTP 请求 URL,响应是一个结构化文档:主要是 JSON,但也可以是 XML、CSV 或其他格式。这意味着各种各样的客户端将能够使用 Solr,从其他 Web 应用程序到浏览器客户端、丰富的客户端应用程序和移动设备。任何能够使用 HTTP 的平台都可以与 Solr 对话。有关客户端 API 的详细信息,请参阅客户端 API。

Solr 提供了对多个字段和多面搜索结果的复杂查询的最简单关键字搜索支持。搜索具有更多关于搜索和查询的详细信息。

如果 Solr 的功能还不够令人印象深刻,那么它处理非常高容量应用程序的能力就应该发挥出来。

一个相对常见的情况是,您有太多数据或者有许多查询,以至于单个 Solr 服务器无法处理您的整个工作负载。在这种情况下,您可以使用 SolrCloud 扩展应用程序的功能,以便在多个服务器之间更好地分发数据和处理请求。可以根据您需要的可扩展性的类型,混合和匹配多个选项。

例如:“Sharding” 是一种缩放技术,其中集合被拆分成多个称为“碎片(shards)”的逻辑片段,以便将集合中的文档数量扩展到超过单个服务器上的物理数量。收集的查询将分发到集合中的每个碎片,并通过合并结果进行响应。另一种可用的方法是增加集合的“复制因子”,这使您可以通过将请求扩展到多台计算机,来添加具有集合的额外副本的服务器,以处理更高的并发查询负载。切分和复制不是相互排斥的, 它共同使 Solr 成为一个非常强大和可伸缩的平台。

最重要的是,这个关于大容量应用程序的讨论不仅是假设性的:一些使用 Solr 的著名互联网网站是:Macy's、EBay 和 Zappo。

有关更多示例,请查看:https://wiki.apache.org/solr/PublicServers。

关于Apache Solr参考指南
Solr系统要求
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

SolrCloud

SolrCloud配置和参数

如何使用AsciiDoc

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }