title: solr 7.0 maven 集成,引擎搭建
author: Eric liu
tags: [solr,引擎,搜索] categories:
- solr
- 搜索
项目背景:
最近工作用到solr做搜索,觉得挺有趣,自己创建一套引擎,也方便研究。
看网上基本都是手动配置的,拷贝jar包,没有maven集成的,有集成solr版本也很老。
所以先自己与maven 集成了一下。
之后 可能会有一些 定制化的功能添加到这个项目中。如自定义分词器,自定义评分等。
复制代码
solr使用: 本项目只是引擎,关于solr的使用,我放在另一个项目中, 另一个项目主要用来 使用solr,和一些 自定义的solrUtils,拼音, 业务场景下的solr 条件拼接,搜索,文章feed,suggest等多中功能的具体实现和说明 附带,测试数据。
github 地址
https://github.com/Eric-ly/solr_engine
复制代码
一,前期配置/说明
1.下载tomcat 8,在bin中添加 工程中的setenv.sh ,自定义 tomcat的启动参数
export SOLR_HOME="$CATALINA_HOME/webapps/lsearch/WEB-INF/solr_home"
export SOLR_LOG="$CATALINA_HOME/logs/"
export TOMCAT_USER="tomcat"
export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=$SOLR_HOME -Dsolr.solr.log.dir=$SOLR_LOG -Dbootstrap_conf=true -DhostContext=lsearch"
配置solr.home 和solr.log,这样就不需要在web.xml中写死了。
2.修改classes中的log4j.properties 中的solr.log ,这样在tomcat 启动参数 就可以设置solr log了
solr.log=${catalina.base}/logs
3.与单机版solr不同,不需要在web.xml中打开 env标签配置 solr home,在tomcat的启动参数中设置solr home就可以
4.集成了 ik分词器,将ik的jar包 放在了WEB-INF的lib中,lib同级配置了ik的配置文件
5.solr的jar包 在maven的pom中进行了配置。不需要像单机中的copy jar包。
复制代码
二,使用说明
1.mvn clean install 打包,打成的war包 放到tomcat的webapps下 ,增加setenv.sh 文件,执行bin下的脚本。
./startup.sh
http://localhost:8081/lsearch/index.html
复制代码
2.idea配置tomcat,deployment 中deploy Artifact war 包,启动tomcat后 访问 url可以直接访问。
http://localhost:8081/lsearch/index.html
三,测试数据
四,遇到的坑
1.solr.home 需要绝对路径写死,不灵活不太好,多次查询之后,修改tomcat的启动参数
-Dsolr.solr.home=$SOLR_HOME
复制代码
2.solr.log. permisson问题
log4j.properties 中的solr.log的目录没有对应,可以写死绝对路径,这里在tomcat的启动参数中增加
export SOLR_LOG="$CATALINA_HOME/logs/"
-Dsolr.solr.log.dir=$SOLR_LOG
复制代码
3.tomcat 启动参数的测试
(1)jps -v 查看jvm的参数
(2)tomcat的bin文件下,新建setenv.sh 里面设置jvm参数,之后用startup.sh 启动
复制代码
- 404错误
solr 各种会遇到404的问题,注意查看solr.log , catalina.out ,localhost.xxx.log 中的错误
(1)严重: Exception starting filter SolrRequestFilter java.lang.NoClassDefFoundError: com/codahale/metrics/MetricSet
解决:缺少metrics 等jar包
(2)web.xml 中的 <security-constraint> 注掉
(3)
复制代码