Solr服务的搭建

    xiaoxiao2021-03-26  26

      在使用京东或者淘宝时,在搜索框中搜索某些关键字时,会给出不同的匹配结果,例如下图:

                                                               

      搜索时,会将关键字进行拆分,拆分为多个关键字进行查询。并且查询不限制于某个域,而是对多个域进行查询,这就是采用Solr服务加分词器进行的。

     

    Solr服务

     

      Solr是一个可伸缩的、能够即时部署的、致力于信息检索的、可以处理海量信息的、以处理自然语言文本为中心的、检索结果按相关性排序的企业级搜索引擎。

     

      Solr处理的业务需求有以下4个特点:

        1、无结构化的自然语言文本为中心

        2、信息浏览粘主导地位的用户需求

        3、以Document这种扁平化并且独立的结构组织信息

        4、要求组织撑得数据模式灵活多变

     

      Solr的数据存储不同于关系型数据库,它不会像数据库表一样,要求数据归属于统一字段,而是设置不同的域,将域与数据库字段做映射,进而对数据库中的数据进行转存。在使用Solr服务查询时,查询的是Solr库中的数据,所以需要定时将数据库中的数据导入到Solr库中。

     

      下面来看一下Solr中的几个概念:

      1、Core

      Core是Solr的核心,一个Solr有一个或多个Core,每个Core可以独立提供索引和查询功能,每个Core对应一个索引或者Collection的Shard,Core增加了管理灵活性和共用资源。

     

      2、Shard

      Shard是Collection的逻辑分片,每个Shard被划分为一个或多歌replicas,通过选举来决定哪个是Leader。

     

      3、Replicas

      Replica是Shard的一个拷贝,每个Replica存在于Solr的一个Core中。创建Collection时,可以指定产生几个replicas,即产生几个Shard的拷贝,每个replica会对应一个Core,也就是一个或多个Solr实例。

     

      4、Collection

      逻辑意义上完整的索引,它尝尝被划分为一个或多个Shard,它们使用相同的Config Set。如果Shard数超过一个,它就是分布式索引。

     

      5、Config Set

      Config Set是Solr Core提供服务必须的一组配置文件。每个Config Set有一个名字,最小需要包括solrconfig.xml和schema.xml,除此之外依据这两个文件的配置文件,可能还需要其他文件。

     

      6、Leader

      Leader是赢得选举的Shard Replica。每个Shard有多个replicas时,会需要通过选举来确定一个Leader。选举可以发生在任意时间,但是通常他们在某个Solr实例发生故障时会被触发。

                                                 

      简单来理解,可以认为Collection是完整的Solr库,Shard1和Shard2是Collection的不同部分,存储了不同的数据。Replica和Leader都是Shard的拷贝,只不过两者分别对应不同的Shard。上面图中,每个Solr是一个Solr实例,每个Solr实例对应两个核心索引Core,每一个Core分别对应Shard1和Shard2的拷贝,相当于每个Solr实例都可以访问到Shard1和Shard2,也就是整个Collection。多个Solr实例就组成了最上面的SolrCloud,SolrCloud就是Solr服务的集群,通过集群可以访问所有的Solr实例,访问任意一个Solr实例都可以访问到Solr集群。

     

      Solr库中的数据是由Document组成的,搜索数据时就从Document中搜索,基本操作也是以Document为单位的。Document中的数据是以json格式存储的,添加时添加一个json格式的文件即可;修改时solr没有update,只需要添加一个新的id相同的文档就可以,solr执行时会先删除旧的文档,然后添加新的文档,效果就是更新;删除可以根据数据id来删除Document中的节点,也可以删除查询条件查询得到的结果。

     

    单机版服务搭建

     

      Solr需要运行在一个Servlet容器中,所以Solr服务器需要安装JDK环境,本篇博客是以Tomcat作为Servlet容器。

      1、将Solr、Tomcat的压缩包拷贝到服务器上

      2、解压Solr压缩包,将dist/solr-4.10.3.war拷贝到Tomcat的webapps目录下,改名为solr.war

      3、启动Tomcat,solr.war自动解压

      4、将Solr压缩包中example/lib/ext目录下所有的jar包拷贝到Tomcat的webapps/solr/WEB-INF/lib目录下

      5、在Tomcat的webapps/solr/WEB-INF/lib目录下创建classes文件夹,将Solr目录下example/resources/log4j.properties到Tomcat下webapps/solr/WEB-INF/classes目录下

      6、创建solrhome,solrhome是放置solr所有配置文件的地方。修改solr工程的web.xml文件,将solrhome的位置配置上

     

    <!--配置jndi告诉solr工程我们的solrhome的位置--> <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/usr/local/solr/solrhome</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>

      7、启动Tomcat,利用http://ipaddress:8080/solr来访问Solr服务,看到Solr的主页面即安装成功。

     

      通过访问Solr的服务界面,可以进行条件查询,也可以通过solrj来从代码中访问Solr服务进行查询。

    转载请注明原文地址: https://ju.6miu.com/read-661968.html

    最新回复(0)