Solr Installation and Configuration
2016-09-12 00:00
239 查看
摘要: Record Solr installation detailed steps.
由于OSchina的原因,图片展示成缩略图,如看不清楚的话,请选中相应图片在新标签页进行打开查看。
例如:Solr (Version:solr-6.2.0) directory content as follows:
bin:Solr命令,提供core、cloud等支持。
docs:Help documentations。
example:Solr example
server: Solr configuration。
Solr自带jetty支持,即可直接通过bin/solr start运行Solr服务。但一般把Solr集成到Tomcat中运行。
Download Java JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html
Download Solr:http://lucene.apache.org/solr/
This tutorial uses the tool version follows:
Tomcat version:apache-tomcat-8.0.37
Solr Version:solr-5.4.1
Java JDK verison:1.7
Copy solr-5.4.1\server\lib\ext(all *.jar) to apache-tomcat-8.0.37\webapps\solr\WEB-INF\lib;
mkdir apache-tomcat-7.0.37\webapps\solr\WEB-INF\classes;
Copy solr-5.4.1\server\resources\log4j.properties to apache-tomcat-8.0.37\webapps\solr\WEB-INF\classes
Configuration Solr Home,Copy D:\Environment\solr-5.4.1\server\solr to apache-tomcat-8.0.37\webapps\solr,将拷贝的solr目录名称更名为solrhome(名称不固定,方便理解即可)
Open apache-tomcat-8.0.37\webapps\solr\WEB-INF\web.xml
7. Run tomcat,access url:http://solr_server_ip:port/sor/admin.html
basic_configs为基础core的配置,data_driven_shcema_configs是数据库连接的配置。复制相应的Core配置内容,更改相应的参数即可使用。
2. 在apache-tomcat-8.0.37\webapps\solr\solrhome\cat中,Create a new folder named data;
3. Copy solr-5.4.1\server\solr\configsets\basic_configs\conf to apache-tomcat-7.0.37\webapps\solr\solrhome,as follows:
4. core.properties
or
通过Solr 控制台新增Core,但前提是要创建Core文件夹,conf(配置文件夹)、data(索引存储文件夹)、schema.xml(模式配置)和solrconfig.xml(索引配置),注意图上灰色文字。
5. Restart Sorl
Share IKAnalyzer.jar 经过测试适用于Solr 5.X:链接: http://pan.baidu.com/s/1dFgFA4x 密码: qjyz
IKAnalyzer content as follows:
2. Copy IKAnalyzer2012FF_u2.jar to apache-tomcat-8.0.37\webapps\solr\WEB-INF\lib;
3. Copy IKAnalyzer.cfg.xml stopword.dic to apache-tomcat-8.0.37\webapps\solr\WEB-INF\classes;
4. Open apache-tomcat-8.0.37\webapps\solr\solrhome\cat\conf\schema.xml
or
配置index(索引)和query(查询)使用的分词器。
useSmart="false" 使用细粒度分词,useSmart="true" 使用智能分词。
5. Run Solr,Access url:http://solr_server_ip:port/sor/admin.html,选择配置的core,点击Analysis,如图:
默认采用最细粒度分词。正常显示,则IK分词器配置成功。
IK Analyzer通过配置IKAnalyzer.cfg.xml 文件来扩充用户自己的词典以及停止词字典(过滤词典),只需把IKAnalyzer.cfg.xml、stopword.dic(停止词典)、ext.dic(用户词典) 文件放入classes目录下面。
IKAnalyzer.cfg.xml content as follows:
ext.dic content as follow:
Tomcat 7 选择IK的分词器类型进行分析的时候提示:
Tomcat 8 选择IK的分词器类型进行分析的时候提示:
after 2seconds as follows
以上图片展示,完全看不出是什么原因导致的问题,具体原因需查看Tomcat\log\日志文件。
Tomcat log as follows:
Solr与IK版本如果直接不匹配,启动时会直接出现以下错误:
注意:出现以上错误信息或者相似图片时,请尝试更换IK的版本,IK下载后其实是重新修改过class内容重新打包才能使用,具体内容下篇介绍,因为IK于2012年停止更新,所以从GoogleCode直接下载后的IK是不可直接使用的,需要在网上找已经重新编译好的IK.jar。
Introduction
Download Solr: http://lucene.apache.org/solr/由于OSchina的原因,图片展示成缩略图,如看不清楚的话,请选中相应图片在新标签页进行打开查看。
例如:Solr (Version:solr-6.2.0) directory content as follows:
bin:Solr命令,提供core、cloud等支持。
docs:Help documentations。
example:Solr example
server: Solr configuration。
Solr自带jetty支持,即可直接通过bin/solr start运行Solr服务。但一般把Solr集成到Tomcat中运行。
Use tomcat run Solr
Requirements
Download Tomcat :http://tomcat.apache.org/Download Java JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html
Download Solr:http://lucene.apache.org/solr/
This tutorial uses the tool version follows:
Tomcat version:apache-tomcat-8.0.37
Solr Version:solr-5.4.1
Java JDK verison:1.7
Configuration Steps
Copy solr-5.4.1\server\solr-webapp\webapp to apache-tomcat-8.0.37\webapps,将webapp更名为solr;Copy solr-5.4.1\server\lib\ext(all *.jar) to apache-tomcat-8.0.37\webapps\solr\WEB-INF\lib;
mkdir apache-tomcat-7.0.37\webapps\solr\WEB-INF\classes;
Copy solr-5.4.1\server\resources\log4j.properties to apache-tomcat-8.0.37\webapps\solr\WEB-INF\classes
Configuration Solr Home,Copy D:\Environment\solr-5.4.1\server\solr to apache-tomcat-8.0.37\webapps\solr,将拷贝的solr目录名称更名为solrhome(名称不固定,方便理解即可)
Open apache-tomcat-8.0.37\webapps\solr\WEB-INF\web.xml
<!-- People who want to hardcode their "Solr Home" directly into the WAR File can set the JNDI property here... --> <!-- <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/put/your/solr/home/here</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> -->将注释去掉,在<env-entry-value>中填写solr home的path。 例如:
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:\Environment\apache-tomcat-8.0.37\webapps\solr\solrhome</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
7. Run tomcat,access url:http://solr_server_ip:port/sor/admin.html
Configuration Core
Solr Core 的基础配置文件存放在solr-5.4.1\server\solr\configsets:basic_configs为基础core的配置,data_driven_shcema_configs是数据库连接的配置。复制相应的Core配置内容,更改相应的参数即可使用。
Create Basic Core
1. 在Tomcat的 Solr home 中,Create a new folder named cat;2. 在apache-tomcat-8.0.37\webapps\solr\solrhome\cat中,Create a new folder named data;
3. Copy solr-5.4.1\server\solr\configsets\basic_configs\conf to apache-tomcat-7.0.37\webapps\solr\solrhome,as follows:
4. core.properties
name=cat //此处为新建core的名称
or
通过Solr 控制台新增Core,但前提是要创建Core文件夹,conf(配置文件夹)、data(索引存储文件夹)、schema.xml(模式配置)和solrconfig.xml(索引配置),注意图上灰色文字。
5. Restart Sorl
Configuring IKAnalyzer 分词器
Install IKAnalyzer
1. Download Solr对应版本的IKAnalyzer分词器包(前提是修改过内容重新编译的)。Share IKAnalyzer.jar 经过测试适用于Solr 5.X:链接: http://pan.baidu.com/s/1dFgFA4x 密码: qjyz
IKAnalyzer content as follows:
2. Copy IKAnalyzer2012FF_u2.jar to apache-tomcat-8.0.37\webapps\solr\WEB-INF\lib;
3. Copy IKAnalyzer.cfg.xml stopword.dic to apache-tomcat-8.0.37\webapps\solr\WEB-INF\classes;
4. Open apache-tomcat-8.0.37\webapps\solr\solrhome\cat\conf\schema.xml
<!-- Defined Field --> <field name="name" type="text_ik" indexed="true" stored="true" /> <!-- Defined FieldType IK Analyzer--> <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart="false"/> <analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart="true"/> </fieldType>
or
<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" /> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" /> </analyzer> </fieldType>
配置index(索引)和query(查询)使用的分词器。
useSmart="false" 使用细粒度分词,useSmart="true" 使用智能分词。
5. Run Solr,Access url:http://solr_server_ip:port/sor/admin.html,选择配置的core,点击Analysis,如图:
默认采用最细粒度分词。正常显示,则IK分词器配置成功。
IK Analyzer通过配置IKAnalyzer.cfg.xml 文件来扩充用户自己的词典以及停止词字典(过滤词典),只需把IKAnalyzer.cfg.xml、stopword.dic(停止词典)、ext.dic(用户词典) 文件放入classes目录下面。
IKAnalyzer.cfg.xml content as follows:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 扩展配置</comment> <!--用户可以在这里配置自己的扩展字典 --> <entry key="ext_dict">ext.dic;</entry> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords">stopword.dic;</entry> </properties>
ext.dic content as follow:
飞机 大炮 机枪 熊猫
Install IKAnalyzer Error
分词器与Solr版本不匹配出现过以下问题:Tomcat 7 选择IK的分词器类型进行分析的时候提示:
Tomcat 8 选择IK的分词器类型进行分析的时候提示:
after 2seconds as follows
以上图片展示,完全看不出是什么原因导致的问题,具体原因需查看Tomcat\log\日志文件。
Tomcat log as follows:
12-Sep-2016 14:37:42.152 SEVERE [http-nio-8080-exec-2] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [default] in context with path [/solr] threw exception [Filter execution threw an exception] with root cause java.lang.AbstractMethodError at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:179) at org.apache.solr.handler.AnalysisRequestHandlerBase.analyzeValue(AnalysisRequestHandlerBase.java:91) at org.apache.solr.handler.FieldAnalysisRequestHandler.analyzeValues(FieldAnalysisRequestHandler.java:221) at org.apache.solr.handler.FieldAnalysisRequestHandler.handleAnalysisRequest(FieldAnalysisRequestHandler.java:190) at org.apache.solr.handler.FieldAnalysisRequestHandler.doAnalysis(FieldAnalysisRequestHandler.java:102) at org.apache.solr.handler.AnalysisRequestHandlerBase.handleRequestBody(AnalysisRequestHandlerBase.java:63) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143) at org.apache.solr.core.SolrCore.execute(SolrCore.java:2068) at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:672) at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:463) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:215) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:179) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
Solr与IK版本如果直接不匹配,启动时会直接出现以下错误:
12-Sep-2016 15:35:49.648 SEVERE [http-apr-8080-exec-3] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [default] in context with path [/solr] threw exception [Filter execution threw an exception] with root cause java.lang.VerifyError: class org.wltea.analyzer.lucene.IKAnalyzer overrides final method tokenStream.(Ljava/lang/String;Ljava/io/Reader;)Lorg/apache/lucene/analysis/TokenStream; at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2560) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:859) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1302) at java.lang.ClassLoader.loadClass(ClassLoader.java:412) at java.lang.ClassLoader.loadClass(ClassLoader.java:412) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:274) at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:543) at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:490) at org.apache.solr.schema.FieldTypePluginLoader.readAnalyzer(FieldTypePluginLoader.java:271) at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:96) at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:54) at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:153) at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:471) at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:160) at org.apache.solr.schema.IndexSchemaFactory.create(IndexSchemaFactory.java:56) at org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:70) at org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:109) at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:80) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:744) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:720) at org.apache.solr.handler.admin.CoreAdminHandler.handleCreateAction(CoreAdminHandler.java:623) at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestInternal(CoreAdminHandler.java:204) at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:184) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:156) at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:664) at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:438) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:223) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:181) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
注意:出现以上错误信息或者相似图片时,请尝试更换IK的版本,IK下载后其实是重新修改过class内容重新打包才能使用,具体内容下篇介绍,因为IK于2012年停止更新,所以从GoogleCode直接下载后的IK是不可直接使用的,需要在网上找已经重新编译好的IK.jar。
相关文章推荐
- SolrCloud 5.2.1 installation and configuration
- PCL Installation and Configuration on OSX
- P6 EPPM Installation and Configuration Guide 16 R1 April 2016
- Openstack: Single node Installation and External Network Accessing Configuration Guide
- Nagios 3.0 Jumpstart Guide For Linux – Overview, Installation and Configuration
- Dovecot installation and configuration on CentOS
- Grub installation and configuration
- Openstack: Single node Installation and External Network Accessing Configuration Guide
- [CI]hudson installation and configuration guide
- sql server 2008,2008 R2 and 2012 SP1 installation guide and configuration
- HHVM Installation and Configuration(HHVM 安装及配置)
- JSP installation and configuration
- Eclipse主要插件Lomboz介绍(2)_Installation and Configuration
- P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1
- HAProxy Installation and Configuration on CentOS 6.4 to Mitigate The Effects of Abusive Clients--转
- Step-by-Step:Installation and Configuration of a secure web application using MySQL,OpenSA Web Server, Tomcat and OpenSSL,on a N
- smokeping:installation and configuration
- enabling ip forwarding - installation and configuration of Quagga - configuring OSPF
- Static Source Code Analysis Tools: PMD’s Installation and configuration
- Simple Event Correlation installation and configuration