需要声明的是此文章所使用的solr版本为7.4,不同的版本对应的安装过程存在差异
solr官方参考文档:http://lucene.apache.org/solr/guide/7_4/solr-tutorial.html
1.solr安装环境
环境solr运行需要jdk环境,solr4使用tomcat作为web容器,从solr5开始已经内置了jetty服务器。
JDK和Tomcat的安装参考文章:https://blog.csdn.net/Stephen_mu/article/details/89187003
jdk版本 1.8
tomcat版本:8.5.42
补充:本文中tomcat安装位置为:/usr/local/solr/tomcat-8.5
solr下载:http://lucene.apache.org/solr/guide/7_4/solr-tutorial.html
2.solr单机安装
1.解压软件包
解压:
tar -xzvf solr-7.4.0.tgz
2.部署solr到tomcat下
复制solr-7.4.0/server/solr-webapp/目录下的webapp到tomcat8.5/webapps/下,并且重命名为solr便于识别!
注意此处solr目录不可以提前手动创建!否则此段命令的效果为将webapp目录搬迁到solr目录下
cp -r /opt/solr-7.4.0/server/solr-webapp/webapp /usr/local/solr/tomcat-8.5/webapps/solr
3.拷贝solr-7.4.0\server\lib\ext 下的jar包以及lib目录下gmetric4j-1.0.7.jar和metrics开头的jar包拷贝到 tomcat-8.5\webapps\solr 项目的WEB-INF\lib下
cp /opt/solr-7.4.0/server/lib/ext/* /usr/local/solr/tomcat-8.5/webapps/solr/WEB-INF/lib/
cp /opt/solr-7.4.0/server/lib/gmetric4j-1.0.7.jar /usr/local/solr/tomcat-8.5/webapps/solr/WEB-INF/lib/
cp /opt/solr-7.4.0/server/lib/metrics-* /usr/local/solr/tomcat-8.5/webapps/solr/WEB-INF/lib/
4.创建一个索引库solrhome
拷贝/opt/solr-7.4.0/server/目录下的solr目录到其他非中文目录下,并且重命名为solrhome
我建立在/usr/local/solr/目录下
cp -r /opt/solr-7.4.0/server/solr /usr/local/solr/solrhome
5.关联solr索引库
修改/usr/local/solr/tomcat-8.5/webapps/solr/WEB-INF/web.xml文件,打开注释,配置solrhome(索引库)的位置
vim /usr/local/solr/tomcat-8.5/webapps/solr/WEB-INF/web.xml
添加如下内容
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>put your solrhome path</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
其中solr索引库位置,我的路径为:/usr/local/solr/solrhome
然后到最下方,将这一段注释掉,不然会报403错误,完成后保存退出(solr4部署不用注释这个)
<!-- Get rid of error message -->
<!--<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>-->
6.拷贝solr7.4.0\server\resources下的 log4j2.xml 到tomcat-8.5/webapps/solr/WEB-INF\classes,如果WEB-INF下没有classes文件那么就创建一个classes文件夹
cp /opt/solr-7.4.0/server/resources/log4j2.xml /usr/local/solr/tomcat-8.5/webapps/solr/WEB-INF/classes/
7.访问测试
启动tomcat服务器
/usr/local/solr/tomcat-8.5/bin/startup.sh
访问地址:http:192.168.28.130:8080/solr/index.html
3.solr使用配置
虽然至此我们完成了solr的安装配置!,但是我们在使用时我们会发现在core admin Tab下点击add core(此处的core相当于数据库中的表用于管理索引和相关配置)
解决方案:在solehome目录下创建new_core目录,并且复制相关配置文件到该new_core下面!然后重启tomcat
##在/usr/local/solr/solrhome/路径下创建new_core目录
mkdir /usr/local/solr/solrhome/new_core
##将相关配置文件拷贝到new_corem目录下
cp -r /usr/local/solr/solrhome/configsets/sample_techproducts_configs/conf
/usr/local/solr/solrhome/new_core/
##将new_core目录下的elevate.xml文件拷贝一份到data目录下
cp /usr/local/solr/solrhome/new_core/elevate.xml /usr/local/solr/solrhome/new_core/data/
4.为solr配置分词器IK
分词器项目地址:https://github.com/magese/ik-analyzer-solr7
1.下载项目压缩包,解压
unzip ik-analyzer-solr-master.zip
2.引入项目jar包,将jar包放入Solr服务的Jetty
或Tomcat
的webapp/WEB-INF/lib/
目录下
cp ik-analyzer-8.1.0.jar /usr/local/solr/tomcat-8.5/webapps/solr/WEB-INF/lib/
3.将resources
目录下的5个配置文件放入solr服务的Jetty
或Tomcat
的webapp/WEB-INF/classes/
目录下
需要拷贝的文件分别为:
# IKAnalyzer.cfg.xml
# ext.dic
# stopword.dic
# ik.conf
# dynamicdic.txt
cp ./ik-analyzer-solr-master/src/main/resources/* /usr/local/solr/tomcat-8.5/webapps/solr/WEB-INF/classes/
4.配置Solr的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>
在/usr/local/solr/solrhome/new_core/conf找到managed-schema配置文件,末尾添加以上内容
5.重启tomcat服务器,测试分词器
6.停止solr服务,我们只需要关闭tomcat即可