Solr6+IKAnalyzer分词环境搭建
环境要求
Zookeeper版本:zookeeper-3.4.8
JDK版本: jdk1.8.
Solr版本:solr-6.4.1
Tomcat版本:tomcat8
ZK地址:127.0.0.1:2181(如果是zk集群的话,多个配置之间使用逗号分隔)
应用部署
已经打包Tomcat压缩文件<apache-tomcat-8.5.11-solr.zip>
百度云下载:链接:http://pan.baidu.com/s/1qX9sN28 密码:du9x
如上附件打包过程:
- 将solr-6.4.1\server\solr-webapp\webapp下面的所有文件复制到tomcat/webapps/solr/目录下
- 将 solr-6.4.1\server\lib\下面所有的*.jar 复制到tomcat/webapps/solr/WEB-INF/lib/目录下
- 将 solr-6.4.1\server\lib\ext\下面所有的*.jar 复制到tomcat/webapps/solr/WEB-INF/lib/目录下
- 将 solr-6.4.1\server\solr 下的所有文件复制到tomcat/solrhome/目录下
配置修改
- 增加tomcat/bin/catalina.sh中的JAVA_HOME和zk的配置
JAVA_OPTS="-DzkHost=127.0.0.1:2181"
JAVA_HOME="C:/DevTool/jdk1.8.0_92/"
- 修改tomcat/solrhome/solr.xml中的hostPort为tomcat的访问端口(例如tomcat访问端口为10100,那么修改配置如下)
<int name="hostPort">10100</int>
- 修改tomcat/webapps/solr/WEB-INFO/web.xml修改solr/home的值(改目录为打包过程第四部的solrhome目录),例如:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>C:\Users\Silver\Desktop\apache-tomcat-8.5.11-10100\solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
- 设置日志输出
tomcat/webapps/solr/WEB-INF/classes/目录下增加log4j.properties文件 ,并更改solr.log=D:/logs/solr/
1 # Default Solr log4j config 2 # rootLogger log level may be programmatically overridden by -Dsolr.log.level 3 #solr.log=${solr.log.dir} 4 solr.log=D:/logs/solr/ 5 log4j.rootLogger=INFO, file, CONSOLE 6 7 # Console appender will be programmatically disabled when Solr is started with option -Dsolr.log.muteconsole 8 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 9 log4j.appender.CONSOLE.layout=org.apache.log4j.EnhancedPatternLayout 10 log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n 11 12 #- size rotation with log cleanup. 13 log4j.appender.file=org.apache.log4j.RollingFileAppender 14 log4j.appender.file.MaxFileSize=10MB 15 log4j.appender.file.MaxBackupIndex=9 16 17 #- File to log to and log format 18 log4j.appender.file.File=${solr.log}/solr.log 19 log4j.appender.file.layout=org.apache.log4j.EnhancedPatternLayout 20 log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n 21 22 # Adjust logging levels that should differ from root logger 23 log4j.logger.org.apache.zookeeper=WARN 24 log4j.logger.org.apache.hadoop=WARN 25 log4j.logger.org.eclipse.jetty=WARN 26 log4j.logger.org.eclipse.jetty.server.Server=INFO 27 log4j.logger.org.eclipse.jetty.server.ServerConnector=INFO 28 29 # set to INFO to enable infostream log messages 30 log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF
- 启动tomcat
登录tomcat进行查看搭建情况
http://127.0.0.1:10100/solr/index.html
可能遇到的问题
- ClassNotFund -- com.codahale.metrics.MetricSet
-- solr-6.4.1\server\lib\除了jetty之外的jar包都放到 tomcat/webapps/solr/WEB-INFO/lib/下
- HTTP Status 403 - Access to the requested resource has been denied
-- 注释掉tomcat/webapps/solr/WEB-INFO/web.xml中的所有<security-constraint>标签
- Xid out of order. Got Xid 52 with err 0 expected Xid 51 for a packet with details: clientPath:null serverPath:null finished:false header:: 51,14
-- 升级zookeeper版本为3.4.8
- UnsupportedClassVersionError: org/apache/solr/servlet/SolrDispatchFilter : Unsupported major.minor version 52.0
-- Solr工程需要JDK8以上,因此需要设置JAVA_HOME为JDK8
设置分词(IKAnalyzer分词)
Git下载源码工程:https://github.com/cj96248/ik-analyzer-solr6.git
将工程打包出JAR包,并且放在tomcat/webapps/solr/WEB-INF/lib/目录下
配置参考:
http://www.tuicool.com/articles/faYFBzA
原理:在字段上面进行了分词处理,solr服务器数据在插入会调用分词进行索引,查询的时候调用分词进行查询