Resin上部署Solr4.5.1 简介

Solr 4.5.1 配置

各软件版本:

  1. solr4.5.1
  2. resin3.1
  3. jdk1.6

一.准备solr的环境

  1. 去官方网站下载solr4.5.1.tgz
  2. 解压文件:tar --xzf solr4.5.1.tgz
  3. 创建solr文件夹  mkdir  /data/web/solr
  4. 创建索引核心配置文件夹  mkdir   /data/web/solr/home,  将 solr4.5.1/example/multicore 拷贝到该目录下,cp  -r /data/web/solr-4.5.1/example/multicore   /data/web/solr/home
  5. 拷贝solr的web工程文件 cp -r /data/web/solr-4.5.1/dist  /data/web/solr/dist

二.resin配置

1.重命名solr-4.5.1文件中的dist文件夹下的solr的war包:mv solr-4.5.1.war solr.war

2.拷贝该solr.war 至resin中webapps目录下。

3.修改resin.conf

  3.1 配置solr/home的JNDI,红色部分。

  3.2 注意配置<tree-loader path="/data/web/solr/dist"/>,它可以自动加载该指定目录下的jar包

 <host id="" root-directory=".">

     <web-app document-directory="webapps/solr">

             <stdout-log path="/data/logs/solr/resin/stdout.log" timestamp="[%H:%M:%S.%s]" rollover-period="1D"/>

             <stderr-log path="/data/logs/solr/resin/stderr.log" timestamp="[%H:%M:%S.%s]" rollover-period="1D"/>

             <character-encoding>utf-8</character-encoding>

             <env-entry>

                  <env-entry-name>solr/home</env-entry-name>

                  <env-entry-type>java.lang.String</env-entry-type>

                  <env-entry-value>/data/web/solr/home/multicore</env-entry-value>

             </env-entry>

             <class-loader>

                   <tree-loader path="/data/web/solr/dist"/>

             </class-loader>

     </web-app>

</host>

三.上述配置完成后,启动resin

启动后常见的几个错误:

1.500 Servlet Exception 

WEB-INF/web.xml:23: <web-app xmlns="http://java.sun.com/xml/ns/javaee">

is an unexpected top-level tag. 

<web-app xmlns="http://caucho.com/ns/resin">,

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"> or

<web-app xmlns=""> are expected.

Syntax: (<web-app> | <web-app> | <web-app>)

解决方法:在web工程目录中 如 /data/web/resin_solr/webapps/solr/WEB-INF/ 修改web.xml  ,直接将报错的三行删掉。

2.log相关日志包无法找到

解决方法:将 /data/web/solr-4.5.1/example/lib/ext中的jar包拷贝至CLASSPATH下

3.

15:21:45.055]429  [main] ERROR org.apache.solr.core.Config  – Exception during parsing file: null:javax.xml.transform.TransformerException: java.lang.UnsupportedOperationException

[15:21:45.055]  at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:71

解决方法:resin中XML解析的实现有问题,所以改用JVM自带的解析类  参考:http://wiki.apache.org/solr/SolrResin 中Resin's XML Parsing Problems,将web.xml中以下注释去掉。

<!-- Uncomment if you are trying to use a Resin version before 3.0.19.

    Their XML implementation isn't entirely compatible with Xerces.

    Below are the implementations to use with Sun's JVM.

  <system-property javax.xml.xpath.XPathFactory=

             "com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl"/>

  <system-property javax.xml.parsers.DocumentBuilderFactory=

             "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>

  <system-property javax.xml.parsers.SAXParserFactory=

             "com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl"/>

-->

Solr4.5中文分词配置

一.配置IK中文分词器

下载最新的IK中文分词器 :IK Analyzer 2012FF_hf1.zip

1.解压IK Analyzer 2012FF_hf1.zip,将该目录下的IKAnalyzer.cfg.xml, ,stopword.dic放到resin_home/webapps/solr/WEB-INF/classes目录下。将IKAnalyzer2012FF_u1.jar包放到resin_home/webapps/solr/WEB-INF/lib中

2.配置schema.xml

<fieldType class="solr.TextField" >

              <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart ="false"/>

              <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart ="false"/>

</fieldType>

升级注意事项:

如果以前用的是solr3.x版本,现在升级到了solr4.x,需要对相应的IKAnalyzer相关jar包进行升级,solr3.x用的是 IKAnalyzer2012_u6.zip

同时,Schemal.xml文件也需要进行相应的改变:

因为Solr4.0发布以后,官方取消了BaseTokenizerFactory接口,而直接使用Lucene Analyzer标准接口。因此IK分词器2012 FF版本也取消了org.wltea.analyzer.solr.IKTokenizerFactory类,所以Solr3.x版本中的schema.xml中存在如下配置<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart ="false"  isMaxWordLength="false"/>

在solr4.x中会报错

 [17:41:30.205]org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] fieldType "text": Plugin init failure for [schema.xml]

analyzer/tokenizer: Error loading

 class 'org.wltea.analyzer.solr.IKTokenizerFactory'. Schema file is /data/web/solr/home/multicore/user/schema.xml

排除错误方法

1.改用新的schema.xml的配置方式

2.使用支持Solr4的IKTokenizerFactory

参考:http://henry2009.iteye.com/blog/1754127

二.配置mmseg4j分词器

下载mmseg4j 包https://code.google.com/p/mmseg4j/

Solr4.x需要下载1.9.0之后的版本,这里下载了mmseg4j-1.9.1.zip

解压该文件,将dist目录下的mmseg4j-analysis-1.9.1.jar,mmseg4j-core-1.9.1.jar,mmseg4j-solr-1.9.1.jar三个jar包放到resin_home/webapps/solr/WEB-INF/lib包下。

若使用的是1.9.x 可以不用在scheml.xml文件中配置 dicPath 参数,可以使用 mmseg4j-core-1.9.x.jar 里的 words.dic。

SolrCloud配置

1.配置zookeeper集群,配置zoo.cfg文件

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/web/zookeeper/data

dataLogDir=/data/web/zookeeper/logs

clientPort=2181

server.1=10.11.17.164:2888:3888

server.2=10.11.17.165:2888:3888

server.3=10.4.16.169:2888:3888

2.先在164机器上配置一台Solr,配置方法参考上面solr4.5.1配置

   创建一个collection: http://solrUrl/admin/collections?action=CREATE&name=user&numShards=1&replicationFactor=1

3 .建立zookeeper 与solr 的关系

Solr中封装有上传配置文件操作的Jar包,通过以下方式使用

3.1    上传配置文件到zookeeper

   java -classpath .:/data/web/resin_solr/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 10.11.17.164:2181,10.11.17.165:2181,10.4.16.169:2181 -confdir /data/web/solr/home/multicore/user/conf  -confname userConf 

3.2    关联配置文件与已有集合

java -classpath .:/data/web/resin_solr/webapps/solr/WEB-INF/lib/*  org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection user  -confname userConf -zkhost 10.11.17.164:2181,10.11.17.165:2181,10.4.16.169:2181 

note:user需为已创建的集合 

进入zookeeper中 bin/  sh zkCli.sh -server 10.11.17.164:2181  查看配置文件的上传情况

启动165上的solr

访问 http://10.11.17.164:8083/#/~cloud   出现以下情况,表示配置成功。 

4.创建collection   的两种方式

4.1通过solr提供的REST接口

http://solrUrl/admin/collections?action=CREATE&name=mycollection&numShards=1&replicationFactor=1

name:集合名称

numShards:集合分片数量

replicationFactor:分片的副本数量

其它具体参数意义参考官方文档 

4.2修改配置文件

1、增加conf目录下的相应的配置文件
2、copy已有的一个core到新core名,并删除原数据
3、在solr.xml的最后一个core节点的后边增加新的core节点
4、重启
上面的4个步骤需要在各个shard上都执行一遍

SolrCloud  multicore配置

第一种方式:

1.在home路径下创建一个集中管理的配置文件夹  如:solr_home/conf

2.将每个core的配置文件拷贝到该文件中,并分别命名。

3.直接在solr.xml中指定core的配置文件。

如下是配置 customer与 taskt 两个core时,将customer与core的schema.xml和solrconfig.xml拷贝至home路径下conf文件中,并且进行区别开,如修改为schema.customer.xml,solrconfig.customer.xml和schema.task.xml,solrconfig.customer.xml。

然后执行如下命令上传该配置文件:

java -classpath .:/data/web/resin_solr/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 10.11.17.164:2181,10.11.17.165:2181,10.4.16.169:2181 -confdir /data/web/solr/home/multicore/conf  -confname centralConf

并且在solr.xml中进行如下配置:

<core numShards="1" name="customer" instanceDir="customer" shard="shard1" collection="customer" schema="schema.customer.xml"  config="solrconfig.xml" />
<core numShards="1" name="task" instanceDir="task" shard="shard1" collection="task" schema="schema.task.xml"  config="solrconfig.xml" />
最后在resin的java启动参数中,添加如下参数:-Dbootstrap_confdir=/data/web/solr/home/multicore/conf  -Dcollection.configName=centralConf  

第二种方式:

保留solr3.x配置文件的位置,为每个core所属的collection单独上传配置文件,并将该collection与配置文件关联。

转载于:https://www.cnblogs.com/zhengtong/p/3498250.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值