还没有成功启动solr的,请参考个人另外一篇文章:http://www.cnblogs.com/zhuwenjoyce/p/6506359.html(solr6.4.1 搜索引擎启动eclipse启动)
注意,这里的两个输入框*Dir若是不指定目录,那么默认这个core3目录将应该在solrhome根目录下,instanceDir和dataDir必须是两个已存在的目录
我这里的core3目录是D:\solr\solrhome\core3(这个core3目录也要先创建出来)
先不要点击按钮Add Core,由于会报错:
Error CREATEing SolrCore 'core3': Unable to create core [core3] Caused by: Can't find resource 'solrconfig.xml' in classpath or 'D:\solr\core3'
为了不这个错误,咱们首先须要为这个core3作一些准备工做,包括要把Add Core中的solrconfig.xml和schema.xml文件都建立出来。主要分为如下几步:
由于是同步数据库,因此找的是db目录下的solrconfig.xml, D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\solrconfig.xml
(上图工具使用的是一个windows搜索器:Everything.exe)
复制D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\solrconfig.xml黏贴到D:\solr\solrhome\core3目录下。
修改D:\solr\solrhome\core3\solrconfig.xml,把<lib dir= 标签这7个节点里的${solr.install.dir:../../../..}替换为本地solr根目录D:/solr/solr-6.4.1
由于在D:\solr\solrhome\core3\solrconfig.xml中,提到使用db-data-config.xml来导入数据
因此同理,复制db目录下的db-data-config.xml到D:\solr\solrhome\core3\目录下
重点1:db-data-config.xml中,url地址中的&符号必须替换为&不然会报错:
Data Config problem: 对实体 "useUnicode" 的引用必须以 ';' 分隔符结尾。
如下是我本地的db-data-config.xml文件
重点2:全部field标签的name值都必须存在于schema.xml中!(参考第三步:建立schema.xml)
复制D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\managed-schema黏贴为D:\solr\solrhome\core3\schema.xml,这个schema.xml就是Add Core界面的schema文件。
重点1:schema.xml文件定义了全部咱们须要在数据库中同步过来的字段,其中db-data-config.xml中导入的字段必需要存在于该schema.xml中因此schema.xml文件决定了在整个solr应用中,全部的字段必须不能重复!建议在solr中对字段命名时采用表名_字段名方式。
重点2:schema.xml文件中全部的<field标签中required="true"属性标志着你全部在solr中的查询都必须有一个字段是这些字段,并且必须有值,不然报错:SolrException missing required field: id
重点3:当点击Add Core按钮以后,原先的D:\solr\solrhome\core3\schema.xml文件将被删除,随之增长D:\solr\solrhome\core3\conf\managed-schema(注意,没有后缀名)
如下是我本地的managed-schema文件
注意,不要缺失<uniqueKey>w10_id</uniqueKey>标签,不然会报错:html
core3: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: QueryElevationComponent requires the schema to have a uniqueKeyField.
第四步:复制stopwords_*.txt文件到D:\solr\core3\lang\目录下
全部的D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stopwords_*.txt文件
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stopwords_el.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stopwords_en.txt
it;id;hy;lv;hu;pt;tr;de;hi;da;cz;th;sv; 等等txt文件,总共有31个
第五步:复制如下文件到D:\solr\core3\lang\目录下
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_it.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_ca.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_ga.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_fr.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\hyphenations_ga.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stemdict_nl.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stoptags_ja.txt
第六步:复制elevate.xml到conf目录下
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\elevate.xml复制到D:\solr\core3\conf
第七步:复制如下文件到D:\solr\core3\目录下
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\protwords.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\synonyms.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\stopwords.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\currency.xml
第八步:重启tomcat,访问solr,增长core
增长一个core就至关于增长了一个数据库,solr本就支持数据库集群,支持以json格式存储数据
点击Core Admin菜单,输入core信息,点击Add Core按钮:
ps: 若是启动过程当中有遇到*.lock文件而报错,那么删除该lock文件从新创建一遍既可成功。
下拉框选择刚刚创建的core3,选中Dataimport菜单
先检查core3加载的db-data-config.xml文件是否有效,点击Reload按钮校验,当出现信息No information available时则表示校验经过。
初次导入选择full-import全量导入模式,点击Execute按钮执行数据导入,页面右边显示Indexing since则表示正在导入中,在导入过程当中,点击Refresh Status则会显示详细的导入信息(Requests,Fetched,Skipped),以下图右图所示:
若是导入失败,须要重来一遍,在选择勾选clean选项(清除以前全部导入索引)外,也能够考虑直接删除数据文件,地址在core3根目录下,有个data文件夹:D:\solr\solrhome\core3\data。
注意勾选上选项 Auto-Refresh Status,这个会自动帮你刷新数据导入状态信息,信息大概变化以下:mysql

请求第一个entity,我这里是w10,数据10万量的表sql

请求第二个entity,我这里是w100, 数据100万量的表数据库

请求第三个entity,我这里是w1000, 数据1000万量的表
导入成功后,信息界面显示以下:
数据导入成solr索引成功,总共花费了5分钟06秒。这时候就能够去掉勾选项Auto-Refresh Status
第十步:gui界面查看导入数据
选择core3,点击菜单Query,什么查询条件都不要加,点击Execute Query按钮
查询出solr同步数据以下,表示同步mysql数据成功:
上图中,http地址表示这次查询可使用这样的get请求方式,其中status 0 表示查询成功,params表示这次查询使用的查询参数。这里显示的全都是默认值。response里的数据表明查询到的数据,能够看到已经查询成功。
第十一步:solr数据状态
选择core4,点击overview,当在tomcat重启后,有可能出现上图中的optimize now,而且Optimized状态显示为叉叉,这是solr在告诉你这个core4的数据索引并无按照solr的索引排序以达到最佳查询状态,只须要点击optimize now进行索引从新排序就能够了。apache
可是注意,这须要花费必定时间,因此会损失性能,固然,从新排序后,性能会提升。json