标签:
因为项目中要用到solr,因此花了一周多的时间研究了一下solr,其中的各种问题我就不说了,特别是这两天在研究定时增量索引的时候,心里不知道多少个XXX在奔腾,好了,废话不多说,下面把我得研究成果跟大家分享一下,另外对于SOLR是什么,大家还是自行度娘吧,让我说我也说不清楚。
SOLR
SOLR最新的版本是5.3,但是我没有用最新的版本,用的是4.10.4.
JDK
JDK的版本是jdk1.7.0_13,这里要说一下的就是4.10版本的SOLR需要1.7以上的JDK,刚开始的时候我使用的是1.6版本的JDK,但是部署之后一直在报错,百度之后换成1.7版本的JDK就没问题了。
TOMCAT
Tomcat的版本是apache-tomcat-7.0.63,这个无所谓,使用tomcat 6也是可以的。
1.下载solr
从http://apache.dataguru.cn/lucene/solr/4.10.4/下载4.10.4版本的solr到本机,随便放到一个位置即可。
2.解压
将下载好的solr4.10.4压缩包解压到本地一个文件夹,位置随意,解压后的文件夹如下所示:
3.部署
(1)复制example\webapps文件夹下面的solr.war文件到tomcat的webapps目录下,启动tomcat解压solr.war,此时tomcat可能会报错,但是不用管,只要把solr.war解压出来即可(当然也可以手动解压),停掉tomcat,删除solr.war,不然以后每次启动都会重新解压。
(2)回到tomcat的webapps目录下,记事本打开solr\WEB-INF\web.xml文件。加入如下所示的代码:
(3)如上面代码所示,需要创建一个SOLR_HOME文件夹,放在哪个盘符可以自己确定,我的是放在F盘下。
(4)创建SOLR_HOME文件夹完成之后,回到解压好的solr 4.10.4文件夹,复制example\solr文件夹下面的全部内容到SOLR_HOME文件夹中,复制完成后的SOLR_HOME文件夹如下所示:
其中的dist和contrib文件夹为非必须得,可以不用考虑。
(5)复制example\lib\ex文件夹下的所有jar文件到webapps\solr\WEB-INF\lib下。
(6)此时运行http://localhost:8080/solr,将看到如下所示的页面:
此时SOLR的环境搭建就完成了(此时只有一个core,solr是支持multicore的,暂时先不说,后面再说),下面开始进行数据的导入:
(1)打开F:\SOLR_HOME\collection1\conf,在此文件夹下面可以看到solrconfig.xml文件,打开该文件,在<config></config>中间添加如下所示的代码:
(2)此处引入了data-config.xml文件,因此需要在solrconfig.xml的同目录下创建data-config.xml文件,文件内容如下:
注意:
a.dataSource标签标示要创建索引的表所在的数据库,配置信息大家自己看一下就明白需要什么东西了,我就不多说了。
b.document标签中的entity关键说一下,document中可以有多个entity标签,一个entity对应一个表,如果是关联表,那么需要在entity标签中嵌套entity标签,这个以后再说,目前就以单张表来说。
name:表示当前的entity名称,区分多个entity;
pk:当前实体所对应的表的主键;
query:用于全量索引;
后面两个为增量索引时需要,暂时不说,后面说道增量索引时再说,如果仅仅是全量索引,那么后面两个完全没有必要了;
c.field:对应数据库中的字段名称,column对应数据库字段名称,name属性可以自己设置,但是要和schema.xml文件中的field对应;
tuser表结构:
(3)schema.xml配置
a.schema.xml文件和data-config.xml在同一目录下,打开该文件,配置如下:
注意field字段的配置,name属性要和data-config.xml中field中的name属性对应,indexed为true表示对该字段创建索引,stored为true表示在索引文件中存储该字段的内容,方便查询时返回,对于内容特别多的字段,或者只需要查询,但是不需要返回内容的字段,可以设置stored为false;
b.设置索引ID
设置schema.xml文件中的uniqueKey为表中的主键,如下所示:
(4)elevate.xml
elevate.xml文件也在solrconfig.xml的同一目录下,打开该文件,设置如下:
之所以要这么设置是因为我们表中的id是int类型的,在schema.xml设置了id也是int类型的,但是solr的索引需要string类型的,如果不把上面的两个<doc>注释掉,那么会报错。
(5)导入jar包
做全量导入的配置文件就是上面这三个了,但是从数据库导入数据还需要三个jar包,一个是mysql链接数据库的jar包(mysql-connector-java-5.1.21.jar),另外两个是solr做数据导入的时候需要的,位于解压的solr 4.10.4文件夹下面的dist文件下面的solr-dataimporthandler-4.10.4.jar和solr-dataimporthandler-extras-4.10.4.jar,将这三个文件放入到tomcat\webapps\solr\WEB-INF\lib下即可。
(6)启动tomcat,访问localhost:8080/solr路径,点击如下位置:
出现如下菜单,点击Dataimport菜单,显示如下页面:
点击Execute按钮,点击下面的刷新按钮,等右侧变成如下所示时数据导入完成:
此时点击Query菜单,进入页面后点击Execute Query按钮,即可查询导入的数据创建的索引:
numFound就是数据库中数据的记录数,我数据库中的数据如下:
可以看到我数据库中也是只有12条数据,至此全量索引已经导入完成。
今天暂时就写到这里,下次会继续写增量导入以及定时增量导入。我把我做的一个demo在百度云上分享了,需要的可以去下载一下,把SOLR_HOME放在F盘即可,如果不想放在F盘的,可以自己改一下solr文件夹下面的WEB-INF中的web.xml中的配置即可。
百度网盘地址是:http://pan.baidu.com/s/1sj9VlOp,文件夹中的内容如下:
Solr文件夹直接放在tomcat下的webapp中即可,SOLR_HOME,如果不想改配置的话可以放在F盘根目录下,如果放在别的盘的话,需要修改solr中web.xml中的配置,
Sql文件就不用说了吧,大家都懂的,jar文件暂时用不到,做定时增量索引时用到,可以不用管。
标签:
原文地址:http://www.cnblogs.com/androidshouce/p/5648852.html