概述:

     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变成一个更加强大和可扩展的平台。

02 Apache Solr: 概览 Solr在信息系统架构中的位置的更多相关文章

  1. 三层架构中bll层把datatable转换为实体model的理解

    看了很多人的项目,很多都是用到三层架构,其中BLL层中有一种将DataTable转换为实体的方法.一直没有明白为啥要这样做,今天特意去搜索了一下,如果没有答案我是准备提问,寻求解答了.还好找到一个相关 ...

  2. 谈谈三层架构中Model的作用

    Model又叫实体类,这个东西,大家可能觉得不好分层.包括我以前在内,是这样理解的:UI<-->Model<-->BLL<-->Model<-->DAL ...

  3. 微服务架构中的BFF到底是啥?

    在<技术中台与业务中台都是啥玩意>一文中留下一个问题:BFF是啥?为啥在API网关和业务中台之间加入了一层BFF?考虑到在实际工作中,我的大部分同事都问过这个问题,这里我也总结一下进行答复 ...

  4. Solr系列一:Solr(Solr介绍、Solr应用架构、Solr安装使用)

    一.前言 前面已经学习了Lucene的分词.索引详解.搜索详解的知识,已经知道开发一个搜索引擎的流程了.现在就会有这样的一个问题:如果其他的系统也需要使用开发的搜索引擎怎么办呢?这个时候就需要把开发的 ...

  5. 使用 Apache Lucene 和 Solr 4 实现下一代搜索和分析

    使用 Apache Lucene 和 Solr 4 实现下一代搜索和分析 使用搜索引擎计数构建快速.高效和可扩展的数据驱动应用程序 Apache Lucene™ 和 Solr™ 是强大的开源搜索技术, ...

  6. Solr记录-solr基础内容

    Solr架构(体系结构) 在本章中,我们将讨论Apache Solr的架构. 下图显示了Apache Solr的体系结构的框图. Solr架构 - 构件块以下是Apache Solr的主要构建块(组件 ...

  7. Solr记录-solr内核与索引

    Solr核心(内核) Solr核心(Core)是Lucene索引的运行实例,包含使用它所需的所有Solr配置文件.我们需要创建一个Solr Core来执行索引和分析等操作. Solr应用程序可以包含一 ...

  8. Solr记录-solr介绍及配置

    Solr是一个开源搜索平台,用于构建搜索应用程序. 它建立在Lucene(全文搜索引擎)之上. Solr是企业级的,快速的和高度可扩展的. 使用Solr构建的应用程序非常复杂,可提供高性能. 为了在C ...

  9. 转载自lanceyan: 一致性hash和solr千万级数据分布式搜索引擎中的应用

    一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得 ...

随机推荐

  1. Maven构建项目后项目报Error错误Java compiler level does not match the version of the installed Java project fac

    项目->右键->Project Facets->修改facets中Java版本(下拉箭头出)为要用的版本 Maven构建项目需注意 1.项目右键->Preferences-&g ...

  2. php 判断文件或目录是否存在

    判断文件或目录是否存在有自带的函数 file_exists:文件是否存在 $file = "check.txt"; if(file_exists($file)) {     ech ...

  3. [转]:Delphi中Format的字符串格式化使用说明

    一.Format函数的用法 Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明: function Forma ...

  4. 常用的dos命令

    cd 进入一个目录 cd .. 返回上一个目录 dir 遍历目录 上下键 查找输入过的命令 Tab键 命令自动补齐

  5. python绘图中使用公式时,解决\frac{}{}出来的字体太小的问题

    在用matplotlib绘图需要在图片中加入公式时,一般要用 text 或 annotate函数,并结合latex语法 '$...$'. 对于分数,如果直接使用\frac{}{},会造成分子分母上的字 ...

  6. for+next()实现数组的遍历及while list each 的使用

    //要求使用for循环语句来完成该数组的遍历//输出每一项的键名和对应值:    $a = array(           'a' => 34,           5 => 51,  ...

  7. PCA降纬一步一步

    import numpy as np 第一步:原始值 X1 0.9 2.4 1.2 0.5 0.3 1.8 0.5 0.3 2.5 1.3 X2 1 2.6 1.7 0.7 0.7 1.4 0.6 0 ...

  8. jmc远程监控java服务

    简介 JMC(Java mission control)是JDK自带的一个图形界面监控工具,监控信息非常全面.他的安装目录在%JAVA_HOME%\bin\jmc.exe 最近JSTORM程序在集群环 ...

  9. sql 查出一张表中重复的所有记录数据

    1.在面试的时候碰到一个 问题,就是让写一张表中有id和name 两个字段,查询出name重复的所有数据,现在列下: select * from xi a where (a.username) in ...

  10. Python 2.7_初试连接Mysql查询数据导出到excel_20161216

    由于每天到公司都需要先执行一遍检测操作,观察数据是否导入完整,今天想到能否自动连接Mysql执行SQL并导出数据,每天到公司直接查看excel文件即可 时间紧,代码初次试验,边摸索边学习吧. xlsx ...