CentOS7+Tomcat+Solr5+MariaDB+Mmseg4j

[版权声明] 本站内容采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆 (CC BY-NC-SA 3.0 CN) 进行许可。
部分内容和资源来自网络,纯学习研究使用。如有侵犯您的权益,请及时联系我,我将尽快处理。
如转载请注明来自: Dreamlike博客,本文链接: CentOS7+Tomcat+Solr5+MariaDB+Mmseg4j

根据项目要求,需要搭建一个搜索引擎的功能,网上找了下资料,发现挺多开源的搜索引擎的。经过对比和考虑,最终决定使用Solr。

一、测试环境

系统: CentOS 7.0 (x64)

二、安装Tomcat、MariaDB、Java

之前的一篇博文:《CENTOS+NGNIX+TOMCAT+MARIADB+JAVA环境搭建》里面已经有详细介绍如何搭建这个环境了,至于Nginx其实也可以安装一个,然后反向代理Tomcat应用服务器就行了。

这里我只安装了Tomcat,默认用的端口是8080的。(记得把8080加入防火墙白名单,不然外部访问不了)

VMware-NAT-port-mapping-6

三、安装并配置Solr

我选用的是5.3.0版本的Solr

1. 去官网找了个速度比较快的镜像,把安装包下载下来,并解压

2. 将目录solr-5.3.0/server/solr-webapp/webapp复制到Tomcat的webapps目录下,并重命名为solr。(注:用yum安装的Tomcat的webapps位置在/var/lib/tomcat/)

3. 将目录solr-5.3.0/server/lib/ext/下的所有jar包复制到/var/lib/tomcat/webapps/solr/WEB-INF/lib/目录下

4. 将目录solr-5.3.0/server/resources/下的log4j.properties文件复制到/var/lib/tomcat/webapps/solr/WEB-INF/目录下

5. 将目录solr-5.3.0/dist下的solr-dataimporthandler-5.3.0.jar和solr-dataimporthandler-extras-5.3.0.jar复制到/var/lib/tomcat/webapps/solr/WEB-INF/lib/目录下

6. 将目录solr-5.3.0/server/solr复制到/home/目录下,并重命名为solr_home,更改用户组为tomcat

7. 修改/var/lib/tomcat/webapps/solr/WEB-INF/web.xml文件,找到如下配置的,把注释去掉,并修改<env-entry-value>的值为/home/solr_home,就是刚刚我们创建的

8. 重启Tomcat

9. 如果不出意外,现在应该是能访问到solr的后台页面了

centos-tomcat-solr-1

四、配置Solr的core

先要复制一份Solr自带的基本配置,然后记得把文件夹组也改一改,再重启下Tomcat。如果不事先创建这个配置,直接在管理后台操作会报错的。

然后在管理后台点击左侧栏下面的新建core,确定即可。

centos-tomcat-solr-2

centos-tomcat-solr-3

五、添加mmseg4j中文分词插件

mmseg4j官网:https://github.com/chenlb/mmseg4j-solr

1. 下载需要mmseg4j-core-1.10.0.jar和mmseg4j-solr-2.3.0.jar共两个jar包(根据官网提示Solr5.0以上的版本需要第2个包)

可以在maven库上找到这些包:http://maven.oschina.net/home.html

2. 复制到/var/lib/tomcat/webapps/solr/WEB-INF/lib目录下

3. 编辑/home/solr_home/new_core/conf/schema.xml配置文件,在尾部增加以下代码,重启tomcat:

4. 在后台管理页面,点击analysis,随便输入点中文,选择textComplex,即我们自定义的类型,点击分析就能看到分词效果了。

centos-tomcat-solr-4

六、添加从MySQL/MariaDB导入数据功能

1. 从MySQL官网下载驱动包mysql-connector-java-5.1.38-bin.jar

http://dev.mysql.com/downloads/connector/j/

2. 把包放到/var/lib/tomcat/webapps/solr/WEB-INF/lib目录下

3. 新建/home/solr_home/new_core/conf/data-config.xml文件,并写入配置:

说明:
dataSource节点指定数据源
dataSource节点的url属性//127.0.0.1:3306/solr,分别指//[数据库IP]:[数据库端口]/[数据库名称],user属性是数据库用户,password属性是数据库密码
document节点将对应数据源的数据映射为Solr的(其实是Lucene)一个Document。
entity节点指定document的具体数据,对应数据库表的行数据。
field节点设定要检索的字段。
entity下的query属性,指定获取全量数据的SQL语句
entity下的deltaImportQuery属性,指定增量获取数据的SQL语句,以deltaQuery的主键数据为条件。
entity下的deltaQuery属性,指定获取数据主键。
entity下的parentDeltaQuery属性,指定获取父entity主键的SQL语句

我的数据库结构和内容:

centos-tomcat-solr-8

4. 编辑/home/solr_home/new_core/conf/schema.xml配置文件,找到: <uniqueKey>id</uniqueKey>,在下面添加:

注意:如果等下重启完solr之后进入后台报错,提示节点重复的话,你要检查一下这个文件是否有name重复的field,如果有根据实际情况把重复的去掉。而且这里field的name跟上面的data-config.xml文件要对应。centos-tomcat-solr-5

5. 编辑/home/solr_home/new_core/conf/solrconfig.xml文件,添加下面配置:

centos-tomcat-solr-6

6. 重启tomcat,并再次进入网页后台,找到"Dataimport",并点击"Execute Query"按钮,自己手动刷新下页面,成功的话会返回如图的结果:

centos-tomcat-solr-7

7. 测试下是否已经从MySQL导入数据成功了。找到左侧菜单"Query",点击"Execute Query"按钮,成功的话会有数据返回:

centos-tomcat-solr-9

七、小结

其实配置这些关键就是文件的配置,按部就班的弄基本不会出问题。这套solr应用环境,我是搭配起来供PHP使用的,PHP那边调用Solr的接口,可以很轻松的拿到数据。接下来的工作就是调整数据库的结构和内容,把自己实际需求的数据架构搭建起来,再逐步优化。

如果本文对您有所帮助,可以请作者喝杯咖啡,感谢支持^_^

支付宝支付
微信支付

发表评论

电子邮件地址不会被公开。 必填项已用*标注