转载请注明出处:https://blog.csdn.net/JakeYangChina/article/details/109647848
前言
最近刚完成电商项目后台开发,对于商品的站内搜索采用的是Solr集群,Solr的版本是8.7.0,服务器采用的是apache-tomcat-9.0.17,因为是首次接触Solr,在配置过程中遇到了许多坑,特此记录下来方便以后查看,从网上能搜索到的文章基本上是低版本配置,和新版本有很大区别,如果你的版本是低于8.0.0版本,那么你可以不用往下阅读了
Solr是什么?
提到Solr就要先说说Lucene,Lucene是信息检索工具包,是由apache推出的一款开源的工具包,进行文档搜索,文档内信息检索或者文档相关元数据搜索等操作,一句话概括就是建立索引,搜索索引。而Solr是Apache下的一个开源项目,Solr是建立在Apache Lucene之上的流行,快速,开放源代码的企业搜索平台, 是一个独立的企业级搜索的应用服务器,配置完即可直接使用,项目里采用的是 Solr集群 + Tomcat 组合,接下来记录下如何配置Solr服务器
Linux环境搭建Window环境代建类似,这里为了方便记录采用Window环境搭建
首先下载软件,Solr官网下载地址:http://lucene.apache.org/solr/
解压完如图:
简单介绍下文件夹:
bin:启动solr内置的jetty服务器,据说jetty服务器不是很稳定,这里不采用jetty
contrib:存放第三方开发的一些插件,配合solr使用
dist:案例jar包,提供一些jar包(需要从这里拷贝一些jar包)
docs:文档相关
example:存放一些案例(需要从这里拷贝案例的索引库配置,拷贝solr-8.7.0\example\example-DIH\solr\solr内所有文件)
licenses:许可说明书之类的文件
server:与搭建服务相关的文件,主要使用到此文件夹下的文件
进入到server文件夹内:如图
主要用到上图使用灰色背景标注的文件夹:
lib:相关联的依赖包(需要从这里拷贝一些jar包)
resources:log相关文件(需要从这里拷贝文件)
solr:可以理解为solr的home目录,需要把这个文件单独复制到任意一个位置,修改文件名称为solr_home(名称任意起),作为solr的home目录
solr-webapp:solr服务端,要想在tomcat服务器内运行,主要使用到此目录
具体配置步骤:
(一)创建solr的home目录:也叫家目录(家目录是干啥子的?举个例子,就好比mysql,这个mysql里可以存方多个项目所用到的数据库)。开始创建家目录:进入到solr-8.7.0\server的目录内,复制solr文件夹存方到任意位置,重新命名为solr_home(我是将文件放到D:\install\solr_home)这样solr的家目录创建完了,创建这个家主要目的就是存放索引库,接下来在这个家里创建索引库(可以创建多个索引库,名称可以任意)
(二)创建索引库:进入到solr-8.7.0\example\example-DIH\solr,目录内
找到solr文件夹,如上图,复制此文件夹,将此文件夹复制到步骤①创建的solr_home目录内,修改名称为new_core(名称可以任意)
(三)将solr服务端添加到tomcat内:进入到solr-8.7.0\server\solr-webapp,目录内
复制webapp文件夹,如上图,将此文件夹复制到apache-tomcat-9.0.17\webapps\内,重命名为solr(名称可以任意)这个名称用于浏览器访问后台管理页面使用,暂时还无法启动服务器进行访问,因为缺少相关联的jar包和日志文件,接下来进行拷贝jar包和日志文件
(四)拷贝jar和日志文件:进入到apache-tomcat-9.0.17\webapps\solr\WEB-INF目录内,创建一个文件夹,名称为classes(将日志文件存放到classes文件夹内)
拷贝日志文件:进入到solr-8.7.0\server\resources,目录内
拷贝上图中所有文件到classes文件夹内,修改log4j2.xml文件内容(可能会报错IOException${sys:solr.log.dir}/solr_slow_requests.log路径非法等问题,所以要进行修改)将所有的${sys:solr.log.dir}替换为./logs即可
拷贝jar包:进入到solr-8.7.0\server\lib\ext,目录内
如上图,将此目录内所有jar包拷贝到apache-tomcat-9.0.17\webapps\solr\WEB-INF\lib,内
进入到solr-8.7.0\server\lib,目录内
如上图,将此目录内的metrics开头的jar包(5个)拷贝到apache-tomcat-9.0.17\webapps\solr\WEB-INF\lib,内
进入到solr-8.7.0\dist,目录内
如上图,将此目录内的solr-dataimporthandler-8.7.0.jar和solr-dataimporthandler-extras-8.7.0.jar两个jar包拷贝到apache-tomcat-9.0.17\webapps\solr\WEB-INF\lib,内
(五)配置服务器需要指定solr的家目录所在位置:进入到apache-tomcat-9.0.17\webapps\solr\WEB-INF,目录内
如上图,找到 web.xml文件,添加内容如下:
(六)注释掉访问权限标签:进入到apache-tomcat-9.0.17\webapps\solr\WEB-INF,修改 web.xml文件,将<security-constraint>标签注释掉,如图:
(七)访问本地网址:127.0.0.1:8080/solr/index.html 效果如图:
配置solr服务器完成!
最后简单记录下solr-dataimporthandler-8.7.0.jar和solr-dataimporthandler-extras-8.7.0.jar这两个jar包的作用:这两个jar包是负责将mysql数据库内容和索引库数据之间相互导入,使用到的工具包,如果涉及到mysql数据数据导入到索引库内还需要单独拷贝mysql-connector-java.jar包
这里有三个文件是非常重要的,所在目录为:solr_home\new_core\conf\,内,分别为:
(一)data-config.xml : 数据库连接文件,这个默认是没有的,需要自己创建一个,名字随便定义
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"
user="root"
password="123456"/>
<document>
<entity name="student_info" query="select id, name,address from student">
<field column="id" name="id" />
<field column="name" name="s_name" />
<field column="address" name="s_address" />
</entity>
</document>
</dataConfig>
(二)managed-schema: solr域配置,老版本名字叫 schema.xml,在这里配置域,即搜索的字段(域名)
(三)solrconfig.xml: 一些系统配置,把以上两个文件连接了起来。
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
下一篇文章将会记录中文分词器的配置!