• 02 Apache Solr: 概览 Solr在信息系统架构中的位置


    概述:

         Apache Solr是一个用JAVA语言构建在Apache Lucene项目上的开源的企业级搜索平台。主要特性包含:全文搜索、命中高亮、片段式搜索、实时索引、动态集群、数据库集成、NoSQL特性和富文本处理。提供分布式搜索和索引复制,设计时便充分考虑了扩展和容错能力。Solr目前是第二流行的企业级搜索引擎,第一是ElasticSearch。
         Solr作为一个独立的全文本搜索服务器运行。在内部使用JAVA开发的Lucene完成全文本索引和查询,提供RESTful API完成对大多数编程语言的支持。灵活的外部配置使得可以不用编写任何的JAVA代码就能完成工作,同时还提供了插件式的架构来支持更为高级的用户定制。
         既然这么强大,那它在我们的整体平台中处于一个什么样的位置?

    定位:

         下图来自于官方手册的一个例子。
      上图中,Solr运行在其他的服务器应用程序之外。拿仓库平台系统来说,我们要提供一些用户界面:例如,可以发起入库的界面,可以查看库存的界面,可以发起出库的界面,作为库管,可能还需要对不正确的物资信息进行调整。无论入库、出库、查看库存等哪个功能,都是围绕着物资展开的。这些信息会同时存在于平台系统的数据库中和Solr系统中,只不过可能会因为存放在不同系统中所要达到的目的和用处不一样,信息的格式和完整度也会有(或没有)差异。
         因为有了Solr,我们在仓储平台中提升搜索体验也变得更加容易。只需通过如下步骤:
         1、定义Schema。Schema告知Solr将要建立索引的文件内容。以仓储平台为例,Schema中可能需要为物资名称、编码、库存量、生产厂商等定义字段。Solr的Schema强大而有弹性,并且允许你为你的应用系统定义特有的Solr行为。
         2、发布Solr。
         3、为用户将要检索进行的检索提供Solr文件。
         4、在应用程序里实现检索功能。
         Solr建立在开发标准之上,因此具有很高的可扩展性。Solr的查询基于RESTful,也就是说,一个查询的本质就是一个简单的HTTP请求URL和一个结构化的响应文档。响应文档的结构主要包含:XML、JSON、CSV,还有其他格式 。这也意味着,大量的客户应用程序可以使用Solr,比如WEB应用、富客户端应用和移动设备。任何支持HTTP协议的平台都能和Solr进行交互。
         Solr基于Apache Lucene项目,一个高性能、全特性的搜索引擎。Solr支持简单的关键字查询,复杂的多字段查询,以及将结果分片段。
     

    扩展性:

         如果单个Solr的能力不够可观,那么它处理非常大量应用程序的能力将能达到理想效果。
         比较常见的场景是:你有大量的数据或者很多的查询,一个单一的Solr服务器无法处理所有的工作负荷。在这种情况下,可以使用SolrCloud来扩展Solr的能力,使得其在多台服务器间能获得更好的分发数据、处理请求的能力。基于你需要获得的扩展能力,大量不同的配置选项需要组合使用。
         例如:分片就是一种扩展方式,它把一个大的集合划分成多个称为"分片"的逻辑块,从而提高一个集合中的文档数量使超过一个单一Solr服务器所允许的物理限度。进入系统的查询会被分发到集合里的每一个分片,然后返回合并的结果。另一种可用的技术是提升集合的“复制因子”,它允许你使用集合的副本添加额外的服务器,通过在多台机器之间传播高并发的查询命令来完成工作。分片和复制并非互不相容的,组合使用能使Solr变成一个更加强大和可扩展的平台。
  • 相关阅读:
    BZOJ 2212/BZOJ 3702
    BZOJ 4761 Cow Navigation
    BZOJ 3209 花神的数论题
    BZOJ 4760 Hoof, Paper, Scissors
    BZOJ 3620 似乎在梦中见过的样子
    BZOJ 3940 Censoring
    BZOJ 3942 Censoring
    BZOJ 3571 画框
    BZOJ 1937 最小生成树
    BZOJ 1058 报表统计
  • 原文地址:https://www.cnblogs.com/chen108/p/6189515.html
Copyright © 2020-2023  润新知