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}/logs3.与单机版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.shhttp://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 中的注掉(3)复制代码