tomcat安装solr-8.11.2

发布时间 2023-07-10 09:58:03作者: 花开重日

tomcat安装solr-8.11.2

下载solr

# 解压
tar -xzf solr-8.11.2.tgz
# 制作war包
cd solr-8.11.2/server/solr-webapp/webapp/
jar cvf solr.war ./*
# 将制作的war包复制到tomcat的webapps目录下
cp solr.war /tmp/apache-tomcat-9.0.75/webapps/
# 启动tomcat自动解压solr.war
cd /tmp/apache-tomcat-9.0.75/bin/
./startup.sh 
# 修改web.xml配置
cd webapps/solr/WEB-INF/

配置你的solrhome目录

 <env-entry>    
  <env-entry-name>solr/home</env-entry-name> 
   <!-- 配置你的solrhome目录 -->
    <env-entry-value>/tmp/solrhome</env-entry-value>    
   <env-entry-type>java.lang.String</env-entry-type>  
</env-entry>

创建solrhome目录

cd /tmp/
mkdir -p solrhome

拷贝配置文件及依赖jar

cd solr-8.11.2/server/solr/
cp solr.xml zoo.cfg /tmp/solrhome/

cd /tmp/solr-8.11.2/server/lib
cp metrics-* /tmp/apache-tomcat-9.0.75/webapps/solr/WEB-INF/lib/

cd /tmp/solr-8.11.2/server/lib/ext/
cp * /tmp/apache-tomcat-9.0.75/webapps/solr/WEB-INF/lib/

cd /tmp/solr-8.11.2/dist/
cp solr-dataimporthandler-* /tmp/apache-tomcat-9.0.75/webapps/solr/WEB-INF/lib/

cd /tmp/apache-tomcat-9.0.75/webapps/solr/WEB-INF/
mkdir classes

cd /tmp/solr-8.11.2/server/resources/
cp log4j2* /tmp/apache-tomcat-9.0.75/webapps/solr/WEB-INF/classes/

重新启动tomcat

cd /tmp/apache-tomcat-9.0.75/bin/
./shutdown.sh
./startup.sh

创建solrCore
在Solr中、每一个Core、代表一个索引库、里面包含索引数据及其配置信息。
Solr中可以拥有多个Core、也就是可以同时管理多个索引库、就像mysql中可以有多个数据库一样。
所以SolrCore可以理解成MySQL中的数据库;

cd /tmp/solrhome/
mkdir -p collectionl/data
mkdir -p collectionl/conf
cd collectionl/
touch core.properties

cd /tmp/solr-8.11.2/example/example-DIH/solr/solr/
cp -r conf/* /tmp/solrhome/collectionl/conf/
# 重新启动tomcat
cd /tmp/apache-tomcat-9.0.75/bin/
./shutdown.sh
./startup.sh

安装配置中文分词器

ik

自己构建

# 项目地址
https://github.com/magese/ik-analyzer-solr
# 阿里云盘jar文件地址
https://www.aliyundrive.com/s/4o2Tn4gdx99
  1. 将jar包放入Solr服务的Jetty(server/solr-webapp/webapp/WEB-INF/lib)或Tomcat的webapp/WEB-INF/lib/目录下;
  2. 将resources目录下的5个配置文件放入solr服务的Jetty(server/solr-webapp/webapp/WEB-INF/lib)或Tomcat的webapp/WEB-INF/classes/目录下;
① IKAnalyzer.cfg.xml
② ext.dic
③ stopword.dic
④ ik.conf
⑤ dynamicdic.txt
  1. 配置Solr的/tmp/solrhome/collectionl/conf/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>

IKAnalyzer.cfg.xml配置文件说明:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>IK Analyzer 扩展配置</comment>
        <!-- 配置是否加载默认词典 -->
        <entry key="use_main_dict">true</entry>
    <!-- 配置自己的扩展字典,多个用分号分隔 -->
    <entry key="ext_dict">ext.dic;</entry>
    <!-- 配置自己的扩展停止词字典,多个用分号分隔 -->
    <entry key="ext_stopwords">stopword.dic;</entry>
</properties>
名称 类型 描述 默认
use_main_dict boolean 是否使用默认主词典 true
ext_dict String 扩展词典文件名称,多个用分号隔开 ext.dic;
ext_stopwords String 停用词典文件名称,多个用分号隔开 stopword.dic;
  1. ik.conf文件说明:files=dynamicdic.txt lastupdate=0
    1. files为动态词典列表,可以设置多个词典表,用逗号进行分隔,默认动态词典表为dynamicdic.txt;
    2. lastupdate默认值为0,每次对动态词典表修改后请+1,不然不会将词典表中新的词语添加到内存中。lastUpdate改为long类型,现可以用时间戳了。
  2. dynamicdic.txt 为动态词典在此文件配置的词语不需重启服务即可加载进内存中。 以#开头的词语视为注释,将不会加载到内存中。

hanlp

#hanlp
https://github.com/hankcs/HanLP
#下载词典
http:/nlp.hankcs.com/download.php?file=data
#下载hanlpl的jar包和配置文件
http:/nlp.nankcs.com/download.ohp?file=jar
#下载handlp整合lucene的jar包
https:/github.com/hankcs/.hanlp-lucene-plugin

image.png

  1. 将hanlp-1.8.4.jar和hanlp-lucene-plugin-1.1.6.jar包放入Solr服务的Jetty(server/solr-webapp/webapp/WEB-INF/lib)或Tomcat的webapp/WEB-INF/lib/目录下;
  2. 将hanlp.properties配置文件放入solr服务的Jetty(server/solr-webapp/webapp/WEB-INF/lib)或Tomcat的webapp/WEB-INF/classes/目录下;
  3. 将词典data-for-1.7.5上传到/tmp目录下
  4. 修改hanlp.properties,配置词典目录

image.png

  1. 配置Solr的/tmp/solrhome/collectionl/conf/managed-schema,添加hanlp分词器,示例如下;
<fieldType name="text_hanlp" class="solr.TextField">
      <analyzer type="index">
          <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" enableIndexMode="true"/>
      </analyzer>
      <analyzer type="query">
          <!-- 切记不要在query中开启index模式 -->
          <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" enableIndexMode="false"/>
      </analyzer>
  </fieldType>