solr 7.0 搭建, maven 集成,搜索引擎 一键启动

来源:互联网 发布:淘宝店铺一件代发货源 编辑:程序博客网 时间:2024/05/19 17:47

项目背景:

最近工作用到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 启动
  1. 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)

这里写图片描述