solr多实例配置以及应用中文分词器IKAnalyzer

前面的两篇博客写的有点傻了,这里整理下,写下整个过程:

 

参考官方文档:

http://wiki.apache.org/solr/SolrTomcat

但是不是完全按照官方文档来的。

 

一、准备材料:

从这里下载solr:http://lucene.apache.org/solr/ ,我下载的是sorl-1.4.0

本机上安装tomcat,我装的是apache-tomcat-6.0.29

 

二、安装 solr 服务

tomcat根目录我下面称为:$CATALINA_HOME

 

自己选择一个规划好的服务目录,比如我选择了:/var/www/run/index/sorl1 用它作为sorl1的$SOLR_HOME

拷贝配置文件和war到$SOLR_HOME

 

 

cp -a /opt/apache-solr-1.4.0/example/solr/* /var/www/run/index/sorl1

cp /opt/apache-solr-1.4.0/dist/apache-solr-1.4.0.war /var/www/run/index/sorl

 

把索引文件修改为你所希望存放的地方,比如我想存放在$SOLR_HOME/data,则修改为

 
<!-- <dataDir>${solr.data.dir:/opt/solr/example/data}</dataDir> -->
<dataDir>/var/www/run/index/solr1/data</dataDir>
 

在tomcat的$CATALINA_HOME/conf/Catalina/localhost/下面,创建文件(solr1.xml),新增 Tomcat Context
把 docBase 指向 $SOLR_HOME/apache-solr-1.4.0.war ,把solr/home 指向 $SOLR_HOME,内容为:

 

<Context docBase="/var/www/run/index/solr1/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/var/www/run/index/solr1"&nbsp; override="true" />
</Context>
 
 

启动tomcat,在浏览器中访问:http://localhost:8080/solr1 就会发现一切都好了。

另外:为了兼容,或者说是为了解决中文乱码,则需要指定URIEncoding为UTF-8

<Connector ... URIEncoding="UTF-8"/>
...
</Connector>
 

 

三、配置多个服务

如果想配置多个服务怎么办?方案有两种:
1、就是刚才拷贝的example/solr换成example/multicore/,按照这里面的配置出来的就是多实例的
2、也可以这样:

把刚才的文件复制一份,就出来另外个实例。

比如接着刚才的,继续配置site:

1、cp -a /var/www/run/index/solr1 /var/www/run/index/solr2

2、然后修改索引文件位置

3、cp  $CATALINA_HOME/conf/Catalina/localhost/solr1.xml   $CATALINA_HOME/conf/Catalina/localhost/solr2.xml

4、然后修改docBase和solr/home的值为新的位置

5、启动tomcat,你会发现就可以访问 http://localhost:8080/solr2

再增加?以此类推。

 


 

 

 

四、配置中文分词器

    我还是比较落后,solr是1.4.0采用的lucene-core-2.9.1,所以分词器我采用的是IKAnalyzer3.1.6GA .看作者的说明:http://linliangyi2007.iteye.com/blog/512577。

现在的版本应该是:3.2.5stable,可以到这里关注一下:http://code.google.com/p/ik-analyzer/downloads/list ,有高版本的可用下载。要注意对应哦。

 

说明下如何使用吧:
比如你要某个字段要中文分词,那么需要
1、在某个实例下的conf/schema.xml配置文件中的types下配置一个fieldType

<fieldType name="text" class="solr.TextField" >
           <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
 
           <analyzer type="index">
               <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory14" isMaxWordLength="false"/>
               <filter class="solr.StopFilterFactory"
                       ignoreCase="true" words="stopwords.txt"/>
               <filter class="solr.WordDelimiterFilterFactory"
                       generateWordParts="1"
                       generateNumberParts="1"
                       catenateWords="1"
                       catenateNumbers="1"
                       catenateAll="0"
                       splitOnCaseChange="1"/>
               <filter class="solr.LowerCaseFilterFactory"/>
               <filter class="solr.EnglishPorterFilterFactory"
                   protected="protwords.txt"/>
               <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
           </analyzer>
 <analyzer type="query">
               <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory14" isMaxWordLength="true"/>
               <filter class="solr.StopFilterFactory"
                       ignoreCase="true" words="stopwords.txt"/>
               <filter class="solr.WordDelimiterFilterFactory"
                       generateWordParts="1"
                       generateNumberParts="1"
                       catenateWords="1"
                       catenateNumbers="1"
                       catenateAll="0"
                       splitOnCaseChange="1"/>
               <filter class="solr.LowerCaseFilterFactory"/>
               <filter class="solr.EnglishPorterFilterFactory"
                   protected="protwords.txt"/>
               <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
           </analyzer>
 
</fieldType>
 

2、在索引字段name上应用

<field name="name" type="text" indexed="true" stored="true" required="true" />

3、拷贝jar包(IKAnalyzer3.1.6GA.jar)到tomcat使用的lib下,两个位置选一个:
$CATALINA_HOME/lib/
$CATALINA_HOME/webapps/solr1/WEB-INF/lib/
选择第二种的话,每个实例注意都要在WEB-INF/lib/下面拷贝该jar包。

然后启动tomcat(可能是重启)你会发现,name上可以根据新的分词器,建立中文索引和中文查询。
你还可以在这里查看分词细节 http://localhost:8080/from/admin/analysis.jsp?highlight=on



遗漏:最近发现在window机器上,某些配置不行的机器,会出现堆溢出,还是配置多核比较节省内存。接着2的过程,配置多核的例子:

  • 删除$CATALINA_HOME/conf/Catalina/localhost/下面的sorl2或者你还有solr3
  • 重命名solr1.xml为solr.xml,修改solr.xml的内容为:
<Context docBase="/var/www/run/index/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/var/www/run/index/ override="true" />
</Context>
  •  拷贝example\multicore下面的solr.xml到 /var/www/run/index ,修改cores内容为:
<cores adminPath="/admin/cores">
    <core name="solr1" instanceDir="solr1" />
    <core name="solr2" instanceDir="solr2" />
  </cores>
 
  • 删除原来的$CATALINA_HOME/webapps下面的solr1 solr2
  • 启动tomcat拷贝IKAnalyzer3.1.6GA.jar到新的solr下的lib,再重启tomcat,OK.

 

你可能感兴趣的:(tomcat,应用服务器,浏览器,Solr,Lucene)