• Solr单机环境搭建及部署


    一、定义

    官网的定义:

    Solr是基于Lucene构建的流行,快速,开放源代码的企业搜索平台。它具有高度的可靠性,可伸缩性和容错能力,可提供分布式索引,复制和负载平衡查询,自动故障转移和恢复,集中式配置等。 Solr支持许多世界上最大的互联网站点的搜索和导航功能。

    简单的理解solr就是一款搜索框架,通常用实现查询功能,比如电商网站的商品检索。

    二、环境搭建

    本文基于以下开源组件版本搭建,约定下载后组件和解压缩的文件都放置在/opt目录下

    • solr-8.2.0

    • apache-tomcat-8.5.47

    首先下载solr-8.2.0.tgz,可以使用wget命令:

    wget http://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.2.0/solr-8.2.0.tgz
    

    解压缩:

    tar -zxvf solr-8.2.0.tgz -C .
    

    解压后,/opt目录下会多一个solr-8.2.0目录

    下载apache-tomcat-8.5.47:

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gz
    

    解压缩:

    tar -zxvf apache-tomcat-8.5.47.tar.gz
    

    为了将solr部署到tomcat服务器,不使用solr自带的jetty,首先在/opt目录下创建一个目录用于部署solr服务,名称无限制,这里取名solr了。

    mkdir solr
    

    复制一份tomcat到/opt/solr目录下,重命名为tomcat8

    cp -r apache-tomcat-8.5.47 solr/tomcat8
    

    solr本质是一个web服务,我们将它复制到tomcat8下:

    cp -r solr-8.2.0/server/solr-webapp/webapp solr/tomcat8/webapps/solr
    

    复制solr-8.2.0/server/lib/ext下的部分jar到solr目录中,为了简便可以完全复制所有的,然后忽略掉disruptor-3.4.2.jar

    cp solr-8.2.0/server/lib/ext/* solr/tomcat8/webapps/solr/WEB-INF/lib/
    

    复制solr-8.2.0/server/lib下以metrics开头的jar到solr目录:

    cp solr-8.2.0/server/lib/metrics* solr/tomcat8/webapps/solr/WEB-INF/lib/
    

    上面这两项注意是复制到solr服务的lib目录下,不是复制到tomcat8/lib下。

    复制solr-8.2.0/server/resources下的log4j*.xml文件到solr

    首先在solr创建classes目录:

    mkdir solr/tomcat8/webapps/solr/WEB-INF/classes
    

    复制日志配置文件:

    cp solr-8.2.0/server/resources/log4j2*.xml solr/tomcat8/webapps/solr/WEB-INF/classes/
    

    将solr-8.2.0/server/solr目录复制到solr/目录下,并重命名为solrhome:

    cp -r solr-8.2.0/server/solr solr/solrhome
    

    修改日志路径

    vim solr/tomcat8/webapps/solr/WEB-INF/classes/log4j2.xml
    

    指定fileName和filePattern的路径:

    <RollingRandomAccessFile
            name="MainLogFile"
            fileName="/opt/solr/solrhome/log/solr.log"
            filePattern="/opt/solr/solrhome/log/solr.log.%i" >
          <PatternLayout>
         ....
    

    关联solr及solrhome

    修改solr里的web.xml文件

    vim solr/tomcat8/webapps/solr/WEB-INF/web.xml
    

    web.xml中<web-app></web-app>标签内添加如下配置,指定sorlhome路径

    <env-entry>
        <env-entry-name>solr/home</env-entry-name>
        <env-entry-value>/opt/solr/solrhome</env-entry-value>
        <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
    
    

    注释掉下方的下列配置:

    <!--
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Disable TRACE</web-resource-name>
            <url-pattern>/</url-pattern>
            <http-method>TRACE</http-method>
    	</web-resource-collection>
    	<auth-constraint/>
    </security-constraint>
    <security-constraint>
    	<web-resource-collection>
            <web-resource-name>Enable everything but TRACE</web-resource-name>
            <url-pattern>/</url-pattern>
            <http-method-omission>TRACE</http-method-omission>
    	</web-resource-collection>
    </security-constraint>
    -->
    

    最后启动tomcat,访问服务器的solr服务:

    sh solr/tomcat8/bin/start.sh
    

    访问地址:

    localhost:8080/solr/index.html
    

    三、配置IK分词器

    首先从IK分词器下载与solr版本匹配的jar包,并放置在solr服务的lib目录下,

    cp ik-analyzer-8.2.0.jar solr/tomcat8/webapps/solr/WEB-INF/lib/
    

    在solr/solrhome/下创建目录test_core,拷贝配置文件到test_core中:

    cp -r solr/solrhome/configsets/sample_techproducts_configs/conf/ solr/solrhome/test_core/
    

    修改conf中的solr.xml文件,修改jar路径:

    <lib dir="${solr.install.dir:../}/contrib/extraction/lib" regex=".*.jar" />
    <lib dir="${solr.install.dir:../}/dist/" regex="solr-cell-d.*.jar" />
    
    <lib dir="${solr.install.dir:../}/contrib/clustering/lib/" regex=".*.jar" />
    <lib dir="${solr.install.dir:../}/dist/" regex="solr-clustering-d.*.jar" />
    
    <lib dir="${solr.install.dir:../}/contrib/langid/lib/" regex=".*.jar" />
    <lib dir="${solr.install.dir:../}/dist/" regex="solr-langid-d.*.jar" />
    
    <lib dir="${solr.install.dir:../}/dist/" regex="solr-ltr-d.*.jar" />
    
    <lib dir="${solr.install.dir:../}/contrib/velocity/lib" regex=".*.jar" />
    <lib dir="${solr.install.dir:../}/dist/" regex="solr-velocity-d.*.jar" />
    

    修改managed-schema文件,添加ik分词器配置:

    <!-- ik分词器 --> 
    <fieldType name="text_ik" class="solr.TextField"> 
    	<analyzer type="index"> 
    		<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/> 
    		<filter class="solr.LowerCaseFilterFactory"/> 
    	</analyzer> 
    	<analyzer type="query"> 
    		<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/> 
    		<filter class="solr.LowerCaseFilterFactory"/> 
    	</analyzer> 
    </fieldType>
    

    重启solr服务,打开管理界面,添加test_core:

    打开管理界面,分词示例:

  • 相关阅读:
    Linux下sed,awk,grep,cut,find学习笔记
    Python文件处理(1)
    KMP详解
    Java引用详解
    解决安卓中页脚被输入法顶起的问题
    解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
    null id in entry (don't flush the Session after an exception occurs)
    HQL中的Like查询需要注意的地方
    spring mvc controller间跳转 重定向 传参
    node to traverse cannot be null!
  • 原文地址:https://www.cnblogs.com/xiaoxiaoyihan/p/11719488.html
Copyright © 2020-2023  润新知