Resin上部署Solr4.5.1 简介

2019-03-27 01:00|来源: 网路

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与配置文件关联。


转自:http://www.cnblogs.com/zhengtong/articles/3498249

相关问答

更多
  • 怎么写简介[2021-11-28]

  • 企 业 简 介 ##服装发展有限公司坐落于著名侨乡“中国休闲服装名城”-石狮,由香港##(集团)公司投资创建于1991年。是一家以女裤为主导、时尚女装系列为配套,集设计、开发、生产、销售于一体的服饰公司。经过多年潜心经营,被誉为-中国女裤专家。2004年,“中国名牌”和“国家免检产品”荣誉称号的获得,使##品牌插上了腾飞的双翅,迈入中国顶级品牌的行列。   进入中国市场十多年来,##产品覆盖了国内近三十个省市、自治区,设立了数百家##品牌专卖店、店中店、商场专柜及多家分公司、代理机构;产品远销欧美、中东、港 ...
  • 重点推荐spring框架,非常实用。 基本上把所有事情都做了,只剩下业务逻辑留给你自己实现。
  • 楼主 要学习LINUX的话 建议 找本 鸟哥的私房菜 相当不错
  • MATLAB软件是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。   MATLAB的特点是可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。   MATLAB的优势主要有四个方面: 1. 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来; ...
  • 故事讲的是:一位老渔夫(桑提亚哥)在海上捕鱼,都过了84天,他还是没有捕到一条鱼,大家都说他运气不好,等到了第85天,他决定去渔夫们从来都没去过的深海去打鱼,来说明自己的能力。在海上,老人发现了一条很大的马林鱼,它克服了重重困难,终于在第三天早晨,把鱼叉刺进了马林鱼的心脏。在返回的途中,老人与到了鲨鱼的五次袭击,他用鱼叉、船桨和刀子勇敢反击。当他驾驶小船回到港口时,马林鱼只剩下一幅巨大的白骨架……
  • 公司简介 英文:company profile 发音:英 [ˈkʌmpəni ˈprəufail] 美 [ˈkʌmpəni ˈproˌfaɪl] company 英 [ˈkʌmpəni] 美 [ˈkʌmpəni] n.公司,商号; 作伴,伴侣,客人; 连队,中队; (社交)集会,聚会 profile 英 [ˈprəʊfaɪl] 美 [ˈproʊfaɪl] n.侧面,半面; 外形,轮廓; [航]翼型; 人物简介 vt.描…的轮廓; 给…画侧面图; 为(某人)写传略; [机]铣出…的轮廓 扩展资料 例句: 1、 ...
  • Erlang热代码升级在两种情况下很有用: 当您拥有单个关键节点时,无法停止。 当您在交换机或路由器上运行Erlang时,情况就是这样,这对您的基础架构或在无人机上升级软件时至关重要,同时它仍在飞行 。 当你真的想保留运行节点的状态(并做一些改动)。 与处理复杂的升级相比,以这种方式设计系统通常更容易,您不需要这样做。 最好避免热代码升级,因为它很难,但有时它是必要的。 在那些时候,您将努力编写和测试升级。 而且你会很高兴,它可以完成! 在您的情况下,您有一个没有状态的节点集群,因此最简单的升级方法是从集群 ...