本文概览:介绍了对solr5.5.4的部署和配置中文分词。
1 介绍
lucene只是提供了api接口,在项目中我们可能需要把索引模块独立成一个服务,这可能正是solr最开始的初衷。即solr是对lucene的服务化。
2 部署
2.1 部署-版本Solr5.5.4
1、准备
- tomcat版本:8.5.15。下载 https://pan.baidu.com/s/1hsJy916
- jdk版本:1.7
- solr版本:5.5.4
2、下载solr-5.5.4.tar
https://pan.baidu.com/s/1hsMMyKs
3、解压
4、使用server目录下文件创建solr服务
将server如下文件拷贝到tomcat:
- 将 server/solr-weapp/的webapp赋值到tomcat/webapps目录下面,并改成solr名字
- 将server/lib/ext中所有jar复制到tomcat/webapps/solr/WEB-INF/lib
- 将server/resouces/log4j.properties复制到tomcat/webapps/solr/WEB-INF/classes。如果classes目录不存在,就新建一个目录。
5、配置solrhome
- 在/Users/HeartThinkDo/config目录下创建config,然后创建solrhome目录。
- 拷贝server/solr下文件到/Users/HeartThinkDo/config/solrhome目录下面。
1 |
cp -rf server/solr/* ~/config/solrhome |
6、修改tomcat/webapps/solr/WEB-INF/web.xml
将如下内容注释去掉,修改<env-entry-value>的值为自己的solr_home目录。如下
1 2 3 4 5 |
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/Users/HeartThinkDo/config/solrhome</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> |
7、启动
(1)启动tomcat。
sh bin/startup.sh
(2)查看
http://127.0.0.1:8080/solr/index.html#/
8、问题
(1)描述
当部署solr-5.5.4到tomcat7时,发现如下错误
java.lang.NoSuchMethodError: javax.servlet.ServletInputStream.isFinished()
(2)解决方法
是因为seveletapi版本低造成的,只要部署到tomcat8上面就可以解决了。
2.2 与版本4xx部署区别
1、配置不同点
和上面部署solr-5.5.4的不同,就在于solr-4xx版本是有solr.war,而最新版面没有了war,而是放置在server/solr-webapp/的webapp下内容,没有了war包,其实相当于解压了war包内容。
3 配置多核
在上面部署完成之后,并无法使用,需要首先创建自己的核(在3xx版本的时候,都会有一个默认的核,在6xx没有了,得自己创建了。
3.1 Core简介
Solr的Core概念相当于数据库中一个表。对于一个数据表包含数据表和索引信息,对于Core也包括正向信息和逆向信息,参考如下 http://www.heartthinkdo.com/?p=1323 。
3.2 创建Core
1、创建一个核
在/Users/HeartThinkDo/config/solrhome下面创建firstCore目录
2、将solr解压目录下的example/example-DIH/solr/solr/* 拷贝到 /Users/HeartThinkDo/config/solrhome/firstCore下面
3、重新启动tomcat
4、遇到问题
(1)描述
Error loading class ‘solr.DataImportHandler’
(2)解决
将solr解压目录下面的dist/下面的solr-dataimporthandler-5.5.4.jar和solr-dataimporthandler-extras-5.5.4.jar拷贝到tomcat/webapps/solr/WEB-INF/lib下面。
注意:也可以把dist/*.jar包都拷贝到tomcat/webapps/solr/WEB-INF/lib下面
4 配置中文分词
1、下载 “IK Analyzer 2012FF_hf1.zip”
下载地址为:https://code.google.com/archive/p/ik-analyzer/downloads 或者 https://pan.baidu.com/s/1jINyqTw
目前有两个版本,如下
(1)如果solr或lucene的3.x,就下载IKAnalyzer2012_u6.zip版本;
(2)如果是solr或lucene的4.x,就下载IK Analyzer 2012FF_hf1.zip
2、解压文件,移动文件
(1)移动IKAnalyzer2012FF_u1.jar
将IKAanalyzerff.jar拷贝到{tomcat安装目录}\webapps\solr\WEB-INF\lib下。
(2)移动IKAnalyzer.cfg.xml和stopword.dic
将这两个文件拷贝到{tomcat安装目录}\webapps\solr\WEB-INF\classes,如果没有classes文件夹,就创建一个。
3、添加新的词库
通过配置IKAnalyzer.cfg.xml完成,IKAnalyzer.cfg.xml存在的作用就是让用户扩充字典,具体步骤如下:
(1)在{tomcat安装目录}\webapps\solr\WEB-INF\classes,建立用户字典extend.dic。需要注意如下:
- extend.dic词典内容的首行设置为空,因为在首行的词不会加入到扩展词库中;
- extend.dic词典内容的格式必须保存为UTF-8形式。
(2)配置IKAnalyzer.cfg.xml,设置扩展词典的名称。如下图:
如果配置文件中,用户需要配置多个词典文件,文件名使用“;”号分隔
1 |
<entry key="ext_dict">extend1.dic;extend2.dic</entry> |
4、配置Users/HeartThinkDo/config/solrhome/managed-schema 文件,如下
1 2 3 4 5 6 7 8 9 |
<schema name="example" version="1.1"> ...... <fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> ...... </schema> |
5、测试分词的效果,可以在如下tab页进行测试:
如下对于“Analyse Fieldname / FieldType”选择自己新增的”text_ik”
6、遇到问题
(1)问题描述
Solr5使用IKAnalyzer进行分词时,会出现如下错误 Connection to Solr lost
(2)解决
这是因为solr5再使用IK Analyzer 2012FF_hf1.zip,此时就会有问题,可以在 https://github.com/EugenePig/ik-analyzer-solr5 下载针对solr5的IK Analyzer,它是在IK Analyzer 2012FF_hf1基础上改进的,增加了对Lucene 5.1.0的支持。具体步骤如下:
- 第一步 下载,并进行打包,打包命令如下:
JDK8 ,使用
1 |
mvn clean install |
JDK7,使用
1 |
mvn clean -Djavac.src.version=1.7 -Djavac.target.version=1.7 install |
- 第二步 将生成的ik-analyzer-solr5-5.x.jar 替换掉之前的IKAnalyzer2012FF_u1.jar,即拷贝到{tomcat安装目录}\webapps\solr\WEB-INF\lib。
(3)也可以直接下载编译好的jar包,https://pan.baidu.com/s/1kUAUPvT
参考资料
1、solr wiki: https://wiki.apache.org/solr/FrontPage