将solr从Jetty转到Tomcat、ik分词、数据库索引
- 复制一份tomcat,然后再solr根目录的同级目录新建一个文件夹用于存放集成后的solr,自定义名字solr_home

- 修改apache-tomcat-8.5.37\conf\server.xml,修改tomcat涉及的端口号,这里可以都加1
1 | <Server port="8006" shutdown="SHUTDOWN"> |
若已经配置了tomcat的环境变量,需要编辑bin/startup.bat,将if not “%CATALINA_HOME%” == “” goto gotHome注释掉( 前面加rem是注释):
1 | REM if not "%CATALINA_HOME%" == "" goto gotHome |
参考:
- 在solr_home文件夹下,新建logs文件夹,然后修改Tomcat\bin下的catalina.bat,增加solr.log.dir系统变量,指定solr日志记录存放地址。
在set “JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%”这句下,新增:
1 | set "JAVA_OPTS=%JAVA_OPTS% -Dsolr.log.dir=D:\SolrRepo\solr_home\logs" |
solr.log.dir的值为刚刚新建的logs文件夹的绝对路径。
- 把solr-8.0.0目录下的server/solr-webapp/webapps放置到tomcat/webapp的目录下,重命名为solr。
- 将solr-8.0.0\server\lib\ext下的所有jar包拷贝到tomcat里的webapps\solr\WEB-INF\lib
- 将solr-8.0.0\server\lib下 除jetty以外的jar拷贝到tomcat里的webapps\solr\WEB-INF\lib
- 将solr-8.0.0\dist下 jar包也拷贝到tomcat里的webapps\solr\WEB-INF\lib
- 放数据库连接驱动的jar包,如mysql-connector-java.jar到webapps\solr\WEB-INF\lib,顺便往solr-8.2.0\dist文件夹下也放一份数据库连接驱动的jar包。
- 在tomcat里的webapps\solr\WEB-INF下创建classes文件夹,将solr/server/resources下的配置文件拷贝到新建的classes文件夹里
把solr-8.0.0 里面的solr文件夹下全部的内容放入solr_home文件夹内(相当于复制一份solr文件夹,然后改名为solr_home )
把solr-8.0.0下contrib和dist文件夹也拷贝至solr_home目录下
在solr_home目录下新建new_core文件夹;并拷贝solr-8.0.0\example\example-DIH\solr\db目录下所有文件至SolrHome\new_core下。
修改solr-home\new_core\conf\solrconfig.xml文件下的对应内容为:(改一下相对路径,加个mysql的连接驱动)
1
2
3
4
5
6
7
8
9
10
11
12
13
14<lib dir="${solr.install.dir:../}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-velocity-\d.*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="ojdbc\d.*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="solr-dataimporthandler\d.*\.jar" />
<lib dir="${solr.install.dir:../}/dist/" regex="mysql-connector-java-*\.jar" />
最后solr_home的文件夹内容:

- 配置tomcat→webApp→solr→WEB_INF下的web.xml,添加配置(指定solr数据源的位置):
1 | <env-entry> |
然后把 <1security-constraint>整个注释掉,目的是防止tomcat 403问题
1 | <!-- |
添加ik中文分词器
将下载好的jar包放入Tomcat 8.5/webapps/solr/WEB-INF/lib目录中
打开solr_home/new_core/conf目录中的managed-schema文件,添加如下代码:
1 | <!-- ik分词器 --> |
- 在界面Analysis的Analyse Fieldname / FieldType:中选text_ik即可使用。
添加数据库索引
- 在solr_home\你的核心\conf下的managed-schema,配置域信息,用来接收数据库数据的对应字段
1 |
|
在solr_home\你的核心\conf下的db-data-config.xml配置数据库数据信息,&符号需要使用
&来替换,如果数据库表中有tinyInt的数据类型,需要设置tinyInt1isBit=false或true,详情:
1 |
|
tips:
在xml的sql语句中,不能直接用大于号、小于号要用转义字符
解决方式:
转义字符:
<是<,小于号>是>,大于号&是&,和'是’,单引号"是”,双引号
或
使用<![CDATA[]]>标记:
<![CDATA[ state <= 3 ]]>
不过要注意,<![CDATA[ ]]>标记的sql语句中的<where> <if>等标签不会被解析
参考文章:
https://blog.csdn.net/weixin_42613538/article/details/89516198