A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 微小笑 于 2017-12-18 21:34 编辑

我们知道,在我们的JavaEE课程体系当中一直使用的是solr4.10.3,那对应到lucene的版本也是4.10.3。我刚看了一下solr的官网(https://lucene.apache.org/solr/)solr的版本已经到7.1.0了。solr的版本更新速度太快了,更新速度快也就表示solr这个开源项目比较活跃。跟我们课程体系中的solr4.10.3比起来,我们课程体系中的solr版本已经比官网的solr版本已经低了3个大版本了,我们课程体系中的solr版本确实有点低了。那么今天博主就以中规中矩的solr5为例,来介绍一下solr5的目录结构、solr5和tomcat进行整合、在solr5中使用IK分词器。
开始学习solr5之前,首先我们需要了解solr5是什么,有什么样的特点,以下是百度百科对solr的解释:


Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
所以要学习solr需要有一定的Lucene的基础,solr和Lucene的关系就好比hibernate和JDBC的关系。当然,你没有Lucene的基础一样可以学习solr,只是学习的坡度会大一些。那么接下来我们就来学习solr5吧。
首先我们要使用solr5,那我们得先下载好solr的相关压缩包,你可以通过官网进行下载,官网下载最新版的solr比较方便,但是要下载历史版本不是特别方便,我提供一个地址给大家,可以方便的下载Apache下所有的开源项目(http://archive.apache.org/dist),将此地址复制到浏览器访问,可以看到Apache下所有的开源项目:

但是我们滚动鼠标往下拽看不到solr,这是因为solr是基于Lucene的,我们只需要找到Lucene就可以找到solr了。

然后我们点击lucene,进入到lucene的界面:

在这里就找到了我们想要的solr了。点进去看,solr各种版本以列表的形式展示在我们的眼前:

那么接下来我们就可以下载我们想要的版本的solr了。那我这里呢就选择solr5.1.0版本。我们点击5.1.0版本,就进入到solr5.1.0版本的界面:

我这里呢已经下载好了:

将windows版的solr解压以后可以得到这样的一个目录结构:

solr5的目录结构和solr4有点不一样,再附上solr4的目录结构,大家可以做一个对比:

在介绍完solr5的目录结构以后,那么接下来我们就来完成solr5和tomcat进行整合。我这里呢就在虚拟机(系统装的是centos6.6)上来完成solr5和tomcat的整合。
说明:我这里连接linux的工具使用的是SecureCRT7.0
一、安装jdk,需要注意jdk需使用1.7及以上(安装过程略)
二、上传solr的压缩包和tomcat的压缩包
使用SecureCRT工具可以直接按alt+p进行文件的拖拽上传,文件上传成功后会存在于/root目录下。

三、解压缩solr-5.1.0.tgz
tar –zxf solr-5.1.0.tgz
此时会得到一个solr-5.1.0目录

其目录结构和windows一样
四、解压tomcat到/usr/local/java目录下
tar –zxf apache-tomcat-7.0.47.tar.gz –C /usr/local/java

五、将solr的war包复制到tomcat的webapps目录下

复制成功以后就可以在tomcat的webapps目录看到有一个solr.war
六、启动tomcat
bin/startup.sh

启动过程中可以查看tomcat的启动日志
tail –f logs/catalina.out
七、启动成功以后停止tomcat
bin/shutdown.sh
tomcat启动成功以后再停止,这么做的目的是为了解压缩solr.war
八、删除tomcat的webapps目录下的solr.war

删除成功以后可以查看一下webapps目录下的目录

九、将solr运行所需要的jar包复制到solr目录的WEB-INF/lib目录下
cd /root/solr-5.1.0/server/lib/ext/
cp * /usr/local/java/apache-tomcat-7.0.47/webapps/solr/WEB-INF/lib/

十、创建solr的classes目录存放配置文件
mkdir /usr/local/java/apache-tomcat-7.0.47/webapps/solr/WEB-INF/classes

十一、将日志文件拷贝到solr的classes目录下
cd ~/solr-5.1.0/server/resources/

cp * /usr/local/java/apache-tomcat-7.0.47/webapps/solr/WEB-INF/classes

十二、配置solrhome
1、在/usr/local目录下创建solrhome目录作为solr的solrhome目录
mkdir /usr/local/solrhome

2、将solr的解压目录下的server/solr目录下的所有的文件拷贝到solrhome目录下
cp *.* /usr/local/solrhome/

3、在solrhome目录下创建collection1目录,并在collection1下创建data目录
mkdir -p collection1/data

4、在collection1目录下创建core.properties文件,并写入name=collection1内容
echo name=collection1 >> core.properties

5、将/root/solr-5.1.0/server/solr/configsets/basic_configs目录下的conf目录拷贝到collection1目录下

6、在collection1目录下创建lib目录,将dataimport插件所需的jar包和MySQL驱动包拷贝到此目录下
mkdir /usr/local/solrhome/collection1/lib
cd /root/solr-5.1.0/dist/
cp *dataimport*.jar /usr/local/solrhome/collection1/lib/
alt+p上传MySQL的驱动包

将MySQL的驱动包复制到collection1/lib目录下
cp mysql-connector-java-5.1.44.jar /usr/local/solrhome/collection1/lib/

至此solrhome配置完成
十三、配置solr和solrhome的关联
vim /usr/local/java/apache-tomcat-7.0.47/webapps/solr/WEB-INF/web.xml

至此solr5和tomcat的整合完成,这时我们就可以启动tomcat,访问solr服务器。
在浏览器地址栏输入:http://192.168.142.142:8080/solr
此时如果我们能看到如下界面,就表示我们的solr5和tomcat整合好了。

虽然solr和tomcat整合好了,但是我们搭建好的solr服务并不能够对中文进行分词,要能够对中文进行分词,还需要使用第三方的中文分词器。鉴于目前课程中使用的是IK分词器,所以我们也可以使用IK分词器。但是如果我们直接使用IK分词器的时候,发现会报错,不信?你试试!由于IK分词器在2012年就没有更新了,而solr一直在更新,solr5已经把其中的一些方法删掉了,如果直接使用IK分词器是不行的。我们可以修改IK分词器的部分源码照样可以在solr5中使用。
首先要使用IK分词器,需要将IK分词器下载下来,IKAnalyzer分词器源码托管在OSChina的git上,下载地址:http://git.oschina.net/wltea/IK-Analyzer-2012FF,将此地址复制到浏览器中访问:

我们可以下载zip压缩包:

下载完成后会得到一个压缩包:

解压后的目录结构:

由于IK分词器不能直接在solr5中直接使用,需要修改IK分词器的部分源码,接下来就教大家如何修改IK分词器的源码:
一、打开eclipse,创建一个java project

二、将解压后的IK分词器目录下的的src目录下的org目录拷贝到刚才创建好的Java项目的src目录下


三、在创建好的Java项目的根目录下创建lib目录

四、将IK分词器所需的jar包拷贝到lib目录下

这个时候需要先下载lucene的jar包,下载的方式跟之前solr下载的方式一样
五、将所有对lucene的依赖jar包添加到classpath

将lucene的jar包添加到classpath之后,这时IK分词器的源码还会报错,主要有三个包下的类会报错,我们只需要修改好就可以了。

六、修改IKAnalyzer.java类
修改之前:

修改之后:

七、修改IKTokenizer.java类
修改之前:

修改之后:

八、修改SWMCQueryBuilder.java类
修改之前:

修改之后:

九、此时sample包的类不需要进行修改,直接删除就可以了

删除之后我们创建的项目就不会报错了:

这个时候IK分词器的源码就已经修改好了,可以用到solr5中了。我们只需要重新打一个jar包就可以了。

然后选择jar file


接下来就一步一步的next就可以了,最后打成的jar包会在eclipse的workspace中。

IK分词器的jar包重新打好之后就可以用到solr5中了。将此jar包上传到linux上,然后放入到solr服务的WEB-INF/lib目录下。将IK分词器的配置文件放入到solr服务的WEB-INF/classes目录下。
cp /root/IK-Analyzer-5.0.jar /usr/local/java/apache-tomcat-7.0.47/webapps/solr/WEB-INF/lib
cp IKAnalyzer.cfg.xml ext.dic stopword.dic /usr/local/java/apache-tomcat-7.0.47/webapps/solr/WEB-INF/classes/

要使用IK分词器,我们还需要在schema.xml中定义一个fieldType:
vim /usr/local/solrhome/collection1/conf/schema.xml
在文件的末尾添加如下内容:
[XML] 纯文本查看 复制代码
<fieldType name="text_ik" class="solr.TextField">
        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"></analyzer>
</fieldType>

这个时候我们只需要重启tomcat就可以了。

如果能看到如上的效果就表示我们的IK分词器可以用到solr5中了。

55.png (90.02 KB, 下载次数: 5)

55.png

2 个回复

倒序浏览
回复 使用道具 举报
666666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马