Solr功能概述
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。
Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
Solr的web工程配置
1、下载与解压
从Solr官方网站(http://lucene.apache.org/solr/ )下载7.7.2版本,根据Solr的运行环境,Linux环境需要下载solr-7.7.2.tgz,windows系统需要下载solr-7.7.2.zip。
虚拟机CentOS系统下载solr-7.7.2.tgz并解压:
wget http://
solr 需要运行在一个Servlet容器中,Solr7.7.2要求jdk使用1.8以上,Solr默认提供Jetty(java写的Servlet容器),本教程使用Tocmat8.5作为Servlet容器,环境如下:
Solr:Solr7.7.2
Jdk:jdk1.8.0_231
Tomcat:apache-tomcat-8.5.47
解压安装包
cd /home/kangmianfeng/Downloads
tar -zxvf solr-7.7.2.tgz
删除残留文件
rm -f solr-7.7.2.tgz
移动到本地安装目录
mv solr-7.7.2 /usr/local/solr-7.7.2
2、Solr7.7.2整合tomcat8.5
Solr解压后server/solr-webapp下有一个webapp目录,它就是Solr的Web工程项目,把它复制到tomcat的webapps目录下并改名为solr,这样更方便我们访问使用。
1.复制webapp框架
cd /usr/local/solr-7.7.2/server/solr-webapp
cp -r webapp /usr/local/tomcat8.5/webapps/solr
2.配置系统环境变量
vim /etc/profile
# solr environment
export SOLR_INSTALL_HOME=/usr/local/solr-7.7.2
export PATH=$PATH:${SOLR_INSTALL_HOME}/bin
按I键开始编辑。然后按Esc再键入:wq保存退出。
使环境变量修改生效
source /etc/profile
3. 关闭CentOS7.5的默认防火墙和SElinux
systemctl stop firewalld
setenforce 0
4.复制web项目依赖的jar包
先拷贝server\lib\ext目录下所有jar包到tomcat8.5的webapps\solr\WEB-INF\lib目录下
cd /usr/local/solr-7.7.2/server/lib/ext
cp -r /usr/local/solr-7.7.2/server/lib/ext/. /usr/local/tomcat8.5/webapps/solr/WEB-INF/lib
以及server\lib目录下gmetric4j-1.0.7.jar,和所有以metrics开头的jar包,拷贝到 tomcat8.5\webapps\solr项目的WEB-INF\lib下:
cd /usr/local/solr-7.7.2/server/lib
cp gmetric4j-1.0.7.jar metrics-* /usr/local/tomcat8.5/webapps/solr/WEB-INF/lib/
5.拷贝log4j日志的2个.xml配置文件
在 tomcat8.5下的webapps\solr\WEB-INF目录中,新创建classes目录。
mkdir /usr/local/tomcat8.5/webapps/solr/WEB-INF/classes
cp /usr/local/solr-7.7.2/server/resources/log4j2.xml /usr/local/tomcat8.5/webapps/solr/WEB-INF/classes/log4j2.xml
cp /usr/local/solr-7.7.2/server/resources/log4j2-console.xml /usr/local/tomcat8.5/webapps/solr/WEB-INF/classes/log4j2-console.xml
cd /usr/local/tomcat8.5/webapps/solr/WEB-INF/classes
ls
6.创建配置solr_home及创建solrcore文件目录
mkdir /usr/local/solr-7.7.2/solr_home
解压后的Solr的server目录下有一个solr目录,把这个目录里的所有内容复制到刚刚创建的solr_home目录下
cp -r /usr/local/solr-7.7.2/server/solr/* /usr/local/solr-7.7.2/solr_home
vim /usr/local/solr-7.7.2/solr_home/solr.xml
# 将主机名和端口号修改为自己的主机名和端口号
# 如果主机名没有映射IP地址的话用IP地址
<str name="host">${host:192.168.179.128}</str>
<int name="hostPort">${tomcat.port:8983}</int>
7.修改tomcat8.5里的webapps\solr\WEB-INF\web.xml文件
如下图所示设置solr_home的映射磁盘位置。
vim /usr/local/tomcat8.5/webapps/solr/WEB-INF/web.xml
<!--配置web.xml告诉solr工程我们的solr_home的位置-->
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-7.7.2/solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
如果出现上图403错误,编辑web.xml照片截图中位置,找到如下代码,将其注释关闭权限控制即可。
vim /usr/local/tomcat8.5/webapps/solr/WEB-INF/web.xml
浏览器访问地址(ip是虚拟机ens33的IP地址)
http://192.168.179.128:8080/solr/index.html#/
安装中文分词器
就上图所示,显示No cores available,这时候如果直接new会报错。因为在solrhome里,需要先创建“new_core”的目录和默认的配置文件夹conf以及data目录。
技巧:使用vi、vim跳转到文档开头gg。跳转到文档末尾:G
new_core目录的创建
先在solr_home下新建一个取名为collection1的文件夹。
mkdir /usr/local/solr-7.7.2/solr_home/collection1
接着在collection1里新建一个data目录存放索引用。
mkdir /usr/local/solr-7.7.2/solr_home/collection1/data
复制必要的启动配置文件
然后复制官方提供的模板conf目录及其中所有文件到collection1文件夹里。
cd /usr/local/solr-7.7.2/server/solr/configsets/_default
cp -r conf /usr/local/solr-7.7.2/solr_home/collection1
#创建中文分词配置文件失败报错,复位不要的conf就执行以下命令。
cd /usr/local/solr-7.7.2/solr_home/collection1
rm -rf conf/managed-schema
rm -rf data/*
cd /usr/local/solr-7.7.2/server/solr/configsets/_default/conf
cp managed-schema /usr/local/solr-7.7.2/solr_home/collection1/conf
IK中文分词器的安装与配置
先要把IK中文分词jar包拷贝到tomcat的solr项目的lib目录,
适配Solr-7.7.2的IK分词jar包版本与名字必须是如下所示:
cd /home/kangmianfeng/Downloads
mv ik-analyzer-solr5-5.x.jar /usr/local/tomcat8.5/webapps/solr/WEB-INF/lib
mv solr-analyzer-ik-5.1.0.jar /usr/local/tomcat8.5/webapps/solr/WEB-INF/lib
然后将IK的拓展词典和配置文件复制到web工程的classes目录
cd /home/kangmianfeng/Downloads
mv IKAnalyzer.cfg.xml stopwords_ik.dic
extdict_ik.dic /usr/local/tomcat8.5/webapps/solr/WEB-INF/classes
最后再去配置修改添加在managed-schema
vim /usr/local/solr-7.7.2/solr_home/collection1/conf/managed-schema
修改Solr7.7.2版本的managed-schema文件,添加fieldType:
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" />
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" />
</analyzer>
</fieldType>
下载IK分词器适用于5.0.0版本~7.7.2版本的Solr使用:
==================================================
参考资料:solr 中文分词器IKAnalyzer和拼音分词器pinyin
在VMware® Workstation 中的CentOS7虚拟机下安装jdk-8u231
win10环境下使用VM15PRO虚拟机CentOS7系统下安装tomcat8.5
end