在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

时间:2021-12-14 20:26:38

最近在研究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.0\server\solr-webapp\webapp下的内容复制到solr工程的webapp下。

4.将solr-6.2.0\server\lib\ext下的jar包,复制到solr工程的WEB-INF/lib中。

5.将solr-6.2.0\server\resources\log4j.properties文件复制到solr工程的source folder中。

6.在solr工程的webapp文件夹下,新建文件夹solrhome,将solr-6.2.0\server\solr下的文件夹以及文件copy到solrhome中。此时项目组成如下图:

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

7.修改web.xml文件,修改env-entry-value的值为"../webapps/solr/solrhome"。(如果env-entry-type报错,把标签env-entry-type放到env-entry-value前面即可)

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

8.启动tomcat,访问http://localhost:8080/solr/index.html,如下图说明构建成功。

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

solr添加core:

1.复制solr项目的solrhome/configsets/basic_configs文件夹到solrhome下,并改成任意名字(这里我的core名称是coretest)。

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

2.在solr项目页面中添加core,下图中coretest对应上面创建的文件夹名称,dataDir指定记录core的数据信息的文件夹,config和schema是core的配置文件,在文件夹coretest/conf下面可以找到。

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

创建完成后如图:

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

整合mysql:

1.找到tomcat目录下的webapps\solr\solrhome\coretest文件夹,复制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 '',
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即可。

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

完成后查询数据:

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

添加中文分词器 :

1.这里我使用的中文分词器是IKAnalyzer,首先需要到网上下载IKAnalyzer的jar包,我使用的jar包是ik-analyzer-solr5-5.x.jar。

2.把ik-analyzer-solr5-5.x.jar 放到\WEB-INF\lib 中。

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"/>

完成后查询测试:

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

其他:

  导入数据完成后,tomcat的webapps\solr\solrhome\coretest文件夹下应该会多出文件夹data和配置文件core.properties,其中core.properties记录core的配置信息,solr启动后会查找该文件,用来恢复core,data文件夹记录core的数据信息,用来恢复core的数据,如果没有的话,需要重新import数据。

在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器