前面的两篇博客写的有点傻了,这里整理下,写下整个过程:
参考官方文档:
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,则修改为
|
在tomcat的$CATALINA_HOME/conf/Catalina/localhost/下面,创建文件(solr1.xml),新增 Tomcat Context
把 docBase 指向 $SOLR_HOME/apache-solr-1.4.0.war ,把solr/home 指向 $SOLR_HOME,内容为:
|
启动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" />
你还可以在这里查看分词细节 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.