全文检索基本理论(二)-solr

solr简介

一、Solr介绍
1. Solr是什么
  基于Lucene的流行、高性能的开源企业级搜索平台。Lucene下的子项目。 官网链接: https://lucene.apache.org/solr
2. Solr的用途
  独立地提供全文搜索服务
3. Solr的特性

3.1、独立的企业级搜索服务,基于http以类-REST API 对外提供服务   你可以通过http协议将文档以JSON/XML/CSV/binary格式发送给Solr进行索引。你通过http GET请求进行查询,可返回JSON/XML/CSV/binary格式的搜索结果。
3.2、近实时的索引能力 文档数据提交索引后,立马就可看到。
3.3、先进的全文检索能力 基于Lucene的强大搜索能力,支持任意数据类型的短语、通配、连接、分组等等查询
3.4、综合的管理界面   Slor内建了综合的管理用户界面,让你方便的管理你的solr实例
3.5、通过简单的配置方式来提供高灵活性、适用性
3.6、高伸缩和容错能力   基于zookeeper,solr支持分布式、备份、再平衡,来提供高伸缩和容错能力
3.7、插件体系架构,易扩展   Solr发布了许多定义良好的扩展点,这使得插件很容易插入索引和查询时的过程中。

4.优点
主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,Solr4 还增加了NoSQL支持。

Solr是用Java编写、运行在Servlet容器(如 Apache Tomcat 或Jetty)的一个独立的全文搜索服务器。 Solr采用了 Lucene Java 搜索库为核心的全文索引和搜索,并具有类似REST的HTTP/XML和JSON的API。Solr强大的外部配置功能使得无需进行Java编码,便可对 其进行调整以适应多种类型的应用程序。Solr有一个插件架构,以支持更多的高级定制。

Solr有一个更大、更成熟的用户、开发和贡献者社区。

支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。
Solr比较成熟、稳定。
不考虑建索引的同时进行搜索,速度更快。
5.缺点
建立索引时,搜索效率下降,实时索引搜索效率不高。
三、Solr应用架构
在这里插入图片描述
要在系统中使用Solr只需完成以下三个步骤即可:
1、在solr中定义一个schema(模式),来告诉solr你要索引的文档document由哪些Field构成。
2、将需要让用户搜索的文档发送给solr
3、在你的应用中公开搜索功能。应用的搜索功能通过调用Solr的搜索API实现。
四、Solr架构(体系结构)
在这里插入图片描述
Solr架构 - 构件块
以下是Apache Solr的主要构建块(组件)

  • 请求处理程序 - 发送到Apache Solr的请求由这些请求处理程序处理。请求可以是查询请求或索引更新请求。根据这些请示的要求来选择请求处理程序。为了将请求传递给Solr,通常将处理器映射到某个URI端点,并且它将为指定的请求提供服务。

  • 搜索组件 - 搜索组件是Apache
    Solr中提供的搜索类型(功能)。它可能是拼写检查,查询,构面,命中突出显示等。这些搜索组件被注册为搜索处理程序。多个组件可以注册到搜索处理程序。

  • 查询解析器 − Apache
    Solr查询解析器解析传递给Solr的查询,并验证查询的语法是否有错误。解析查询后,将它们转换为Lucene理解的格式。 响应写入器 -
    Apache Solr中的响应写入器是为用户查询生成格式化输出的组件。
    Solr支持XML,JSON,CSV等响应格式。对每种类型的响应都有不同的响应写入。

  • 分析器/分词器 - Lucene以令牌的形式识别数据。 Apache Solr分析内容,将其分成令牌,并将这些令牌传递给Lucene。
    Apache Solr中的分析器检查字段的文本并生成令牌流。分词器将分析器准备的令牌流分解成令牌。

  • 更新请求处理器 - 每当向Apache
    Solr发送更新请求时,请求都通过一组称为更新请求处理器的插件(签名,日志记录,索引)运行。这个处理器负责修改,例如删除字段,添加字段等。

    扫描二维码关注公众号,回复: 9504219 查看本文章

五、Solr术语
一般术语
以下是在所有类型的Solr设置中使用的一般术语的列表

  • 实例 -
    就像一个tomcat实例或一个jetty实例,这个术语指的是在JVM中运行的应用程序服务器。Solr主目录提供对每个这些Solr实例的引用,一个或多个核心可以配置在每个实例中运行。
  • 核心(core) - 在应用程序中运行多个索引时,可以在每个实例中拥有多个核心,而不是每个核心的多个实例。
  • 主目录(home) - 术语$SOLR_HOME是指主目录,其中包含有关内核及其索引,配置和依赖关系的所有信息。
  • 碎片(Shard) -
    在分布式环境中,数据在多个Solr实例之间进行分区,其中每个数据块可以称为碎片(Shard)。它包含整个索引的子集。

SolrCloud术语
Solr可以在独立模式下进行安装,同时还可以在分布式模式(云环境)中安装Solr,Solr以主从模式安装。在分布式模式下,索引在主服务器上创建,并且将其复制到一个或多个从服务器。

与Solr Cloud相关的主要术语如下 -

  • 节点(Node) - 在Solr云中,Solr的每个单个实例都被视为一个节点。
  • 集群 - Solr云环境中的所有节点组合在一起构成集群。
  • 集合 - 集群具有称为集合的逻辑索引。
  • 碎片 - 碎片是集合的一部分,它具有一个或多个索引副本。
  • 副本 - 在Solr Core中,在节点中运行的分片副本称为副本。
  • 领导者(Leader) - 它也是碎片的副本,它将Solr Cloud的请求分发给剩余的副本。
  • Zookeeper - 这是一个Apache项目,Solr Cloud用于集中配置和协调,管理集群和选择领导者。

配置文件
Apache Solr中的主要配置文件如下 -

  • Solr.xml - 它是包含Solr Cloud相关信息,此文件是在$SOLR_HOME目录中。
    为了加载核心,Solr引用这个文件,这有助于识别它们。
  • Solrconfig.xml − 此文件包含与请求处理和响应格式化相关的定义,核心特定配置,以及索引,配置,管理内存和提交。
  • Schema.xml − 此文件包含整个模式以及字段和字段类型。
  • Core.properties - 此文件包含特定于核心的配置。它被引用为核心发现,

因为它包含核心的名称和数据目录的路径。它可以在任何目录中使用,会将此目录它视为核心目录。

发布了47 篇原创文章 · 获赞 7 · 访问量 5871

猜你喜欢

转载自blog.csdn.net/weixin_42227576/article/details/102601532
今日推荐