tomcat安装solr-8.11.2
tomcat安装solr-8.11.2
# 解压
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
- 将jar包放入Solr服务的Jetty(server/solr-webapp/webapp/WEB-INF/lib)或Tomcat的webapp/WEB-INF/lib/目录下;
- 将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
- 配置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; |
- ik.conf文件说明:files=dynamicdic.txt lastupdate=0
- files为动态词典列表,可以设置多个词典表,用逗号进行分隔,默认动态词典表为dynamicdic.txt;
- lastupdate默认值为0,每次对动态词典表修改后请+1,不然不会将词典表中新的词语添加到内存中。lastUpdate改为long类型,现可以用时间戳了。
- 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
- 将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/目录下;
- 将hanlp.properties配置文件放入solr服务的Jetty(server/solr-webapp/webapp/WEB-INF/lib)或Tomcat的webapp/WEB-INF/classes/目录下;
- 将词典data-for-1.7.5上传到/tmp目录下
- 修改hanlp.properties,配置词典目录
- 配置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>