最近在研究solr,这里只记录一下eclipse中构建solr项目,添加core,整合mysql,添加中文分词器的过程。
版本信息:solr版本6.2.0+tomcat8+jdk1.8
推荐阅读:solr中文官方文档
参考:solr6.2从环境部署到与mysql整合到中文分词器到solrJ的使用
在eclipse中构建solr项目:
1.下载solr-6.2.0.zip,官网下载地址:http://lucene.apache.org/solr/downloads.html。
2.在eclipse中创建web项目solr。
3.将solr-6.2.0serversolr-webappwebapp下的内容复制到solr工程的webapp下。
4.将solr-6.2.0serverlibext下的jar包,复制到solr工程的WEB-INF/lib中。
5.将solr-6.2.0server esourceslog4j.properties文件复制到solr工程的source folder中。
6.在solr工程的webapp文件夹下,新建文件夹solrhome,将solr-6.2.0serversolr下的文件夹以及文件copy到solrhome中。此时项目组成如下图:
7.修改web.xml文件,修改env-entry-value的值为"../webapps/solr/solrhome"。(如果env-entry-type报错,把标签env-entry-type放到env-entry-value前面即可)
8.启动tomcat,访问http://localhost:8080/solr/index.html,如下图说明构建成功。
solr添加core:
1.复制solr项目的solrhome/configsets/basic_configs文件夹到solrhome下,并改成任意名字(这里我的core名称是coretest)。
2.在solr项目页面中添加core,下图中coretest对应上面创建的文件夹名称,dataDir指定记录core的数据信息的文件夹,config和schema是core的配置文件,在文件夹coretest/conf下面可以找到。
创建完成后如图:
整合mysql:
1.找到tomcat目录下的webappssolrsolrhomecoretest文件夹,复制core.properties到solr项目的webapp/solrhome/coretest目录下。(core.properties保存的是上一步创建的core的配置信息,solr启动后会查找该文件,用来恢复core,可以忽略该步骤,但是当启动solr时需要重新添加core)
2.创建一个mysql数据表,并添加一些基础数据,建表语句:
DROP TABLE IF EXISTS `solrtest`; CREATE TABLE `solrtest` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `context` varchar(255) DEFAULT NULL COMMENT 'context', `updateTime` datetime DEFAULT NULL COMMENT 'updateTime', `sort` int(11) DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
INSERT INTO `solrtest` VALUES ('1', 'qweqwe', '2017-02-04 09:21:56', '1');
INSERT INTO `solrtest` VALUES ('2', '足球', '2017-02-04 11:55:02', '1');
INSERT INTO `solrtest` VALUES ('3', '足球篮球', '2017-02-04 11:55:14', '1');
INSERT INTO `solrtest` VALUES ('4', '足球篮球羽毛球', '2017-02-04 16:27:41', '1');
3.修改coretest/conf文件夹下的solrconfig.xml文件,增加代码:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">solr-data-config.xml</str> </lst> </requestHandler>
4.在同级目录下创建solr-data-config.xml文件,并添加代码:
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solrtest" user="root" password="root"/> <document name="solr_mysql_test"> <entity name="solrtest" pk="id" query="select * from solrtest" deltaImportQuery="select * from solrTest where id = '${dih.delta.id}'" deltaQuery="select id from solrTest where updateTime > '${dataimporter.last_index_time}'"/> <field column="id" name="id"/> <field column="context" name="context"/> <field column="updateTime" name="updateTime"/> <field column="sort" name="sort"/> </document> </dataConfig>
5.在同级目录打开 managed-schema.xml ,在其中增加如下代码。(其中注释掉的name为id的field,是因为managed-schema.xml默认就有id字段,不注释会产生冲突。)
<!-- <field name="id" type="string" required="true" indexed="true" stored="true" multiValued="false"/> --> <field name="context" type="string" indexed="true" stored="true" multiValued="false"/> <field name="updateTime" type="date" indexed="true" stored="true" multiValued="false"/> <field name="sort" type="int" indexed="true" stored="true" multiValued="false"/>
6.将下载的solr-6.2.0/dist文件夹下的jar包复制到WEB-INF/lib下(主要是solr-dataimporthandler-6.2.0.jar和solr-dataimporthandler-extras-6.2.0.jar),将mysql的驱动jar包复制到WEB-INF/lib下。
7.启动tomcat,登陆solr页面,导入数据:打开Dataimport页面,勾选Auto-Refresh Status然后Execute即可。
完成后查询数据:
添加中文分词器 :
1.这里我使用的中文分词器是IKAnalyzer,首先需要到网上下载IKAnalyzer的jar包,我使用的jar包是ik-analyzer-solr5-5.x.jar。
2.把ik-analyzer-solr5-5.x.jar 放到WEB-INFlib 中。
3.在managed-schema.xml文件中添加分词器配置。(这里分词器名称是text_ik)
<!-- IKAnalyzer中文分词器.如果版本与solr对应不上,会报抽象方法错误 --> <fieldType name="text_ik" class="solr.TextField"> <!--索引时候的分词器--> <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <!--查询时候的分词器--> <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
4.在managed-schema.xml文件中对某个field使用分词器text_ik:
<field name="context" type="text_ik" indexed="true" stored="true" multiValued="false"/>
完成后查询测试:
其他:
导入数据完成后,tomcat的webappssolrsolrhomecoretest文件夹下应该会多出文件夹data和配置文件core.properties,其中core.properties记录core的配置信息,solr启动后会查找该文件,用来恢复core,data文件夹记录core的数据信息,用来恢复core的数据,如果没有的话,需要重新import数据。