Solr是一个独立的企业级搜索应用服务器,它对外提供API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引(solr生成倒排索引,数据库生成的索引是二叉树索引,效率差距很大);也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。Solr是一个类似于Google或者Bing的全文检索引擎, Solr是与搜索引擎优化(SEO)相关联的。很多公司也使用elasticsearch作为搜索引擎。
  

一、solr安装

准备:tomcat7.0版本,solr5.3.0版本
目前网络上对solr3.x和4.x的安装介绍比较多,这里使用新的5.3.1版本进行安装介绍。
1、下载tomcat和solr压缩包并解压;
2、将 solr 压缩包中 solr-5.3.0\server\solr-webapp\文件夹下有个webapp文件夹,将之复制到Tomcat\webapps\目录下,文件夹名改成solr ;
3、将 solr 压缩包中 solr-5.3.0\server\lib\ext 中的 jar 全部复制到 Tomcat\ webapps\solr\WEB-INF\lib 目录中;
4、将 solr 压缩包中 solr-5.3.0/ server/resources /log4j.properties 复制到Tomcat\ webapps\solr\WEB-INF\lib 目录中;
5、将 solr 压缩包中 solr-5.3.0/server/solr 目录复制到计算机某个目录下,如D:\testsolr\solr_home(solr创建的core到时会存放在该目录下);
6、打开Tomcat/webapps/solr/WEB-INF下的web.xml,找到如下配置内容(初始状态下该内容是被注释掉的):


solr/home
D:/testsolr/solr_home/solr
java.lang.String

1
2
3
4
5
1
2
3
4
5
将 env-entry-value 中的内容改成你的solr_home路径(第5步的文件),这里是D:/testsolr/solr_home/solr;
7、保存关闭,而后启动tomcat,在浏览器输入http://localhost:8080/solr即可出现Solr的管理界面,如下:
这里写图片描述

二、创建第一个core

1、将solr-5.3.0/dist中的solr-dataimporthandler、solr-dataimporthandler-extras的jar包copy到tomcat\webapps\solr\WEB-INF\lib下;
2、在D:\testsolr\solr_home\solr下创建my_core文件夹(名称与下图的instanceDir一致,建议下图中的name也和该文件夹名一致);
3、在my_core文件夹下创建data和conf文件夹;
4、将solr-5.3.0\example\example-DIH\solr\solr\conf所有文件和文件夹都copy到D:\testsolr\solr_home\solr\my_core\conf下;
5、启动tomcat,访问solr,创建core,如下
这里写图片描述
如此,新增core即可完成;
6、可以在“core selector”这里查询和编辑你的solr相关信息;

三、solr分词

这里使用的是mmseg4j 分词,该jar包网上下载的普遍有问题,不能正常使用。经测试,该版本可以,下载地址:
1、将文件里的jar包拷贝到Tomcat\webapps\solr\WEB-INF\lib下;
2、在 D:\testsolr\solr_home\solr\ 目录下新建一个 dic 文件夹 , 把 新下载的词库(data文件夹下)拷贝到 dic 目录下;
3、在 D:\testsolr\solr_home\solr\my_core\conf\schema.xml 文件的里添加如下:



















1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
这里不同的name选用不同的分词方式;
其中dicPath属性的值为第二步的地址,不要写错哦;
4、在 D:\testsolr\solr_home\solr\my_core\conf\schema.xml 文件里添加如下 :

<field name="name" type="textMaxWord" indexed="true" stored="true" multiValued="true" />
<field name="description" type="textMaxWord" indexed="true" stored="true" multiValued="true" />

1
2
1
2
5、开启服务如下进行分词测试,如下图分词:
这里写图片描述
如下图所示root字段是没有分词的结果:
这里写图片描述
在过程中出现如下错误,是因为字段重复,在schema.xml中将另一个content字段的配置注释掉即可(name同理)。
这里写图片描述
6、如此,分词ok

四、solr连接数据库

接下来进行solr连接数据库,生成索引,以及查询方法。
数据库建表语句:

CREATE TABLE test_person (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(50) DEFAULT NULL COMMENT ‘姓名’,
description varchar(500) DEFAULT NULL COMMENT ‘简介’,
PRIMARY KEY (id)
);

insert into test_person(name,description) values(‘周星驰’,’香港著名喜剧演员’);
insert into test_person(name,description) values(‘周润发’,’香港著名演员’);
insert into test_person(name,description) values(‘周节能’,’台湾著名歌手,号称音乐天王’);
insert into test_person(name,description) values(‘成龙’,’香港著名动作演员’);
insert into test_person(name,description) values(‘山本一木’,’日本鬼子’);
insert into test_person(name,description) values(‘仓木麻衣’,’日本歌手’);
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
1、将数据库驱动包放入solr项目工程中(我用的MySQL,使用jar包mysql-connector-java-5.1.18-bin.jar);
2、在自己创建的core实例的conf文件中进行数据配置(我的是D:\testsolr\solr_home\solr\my_core\conf\solr-data-config.xml),覆盖内容如下(数据库表自己根据配置自己建):