您的位置:首页 > 数据库

solr(二) solr5.5导入Ik分词,导入数据库数据

2017-09-28 16:30 615 查看
请结合上一篇看,tomcat目录以及solr home

一、导入IK分词

solr导入IK分词,为了支持中文分词。导入很简单:

1、下载Ik分词jar包以及所需的扩展词典

我的百度云下载:https://pan.baidu.com/s/1qYv6WaS

或者csdn资源下载:http://download.csdn.net/download/lztizfl/9999936

2、下载解压缩:



3、把IKAnalyzer2012FF_u2.jar复制到F:\Mysolr\tomcat8\webapps\solr\WEB-INF\lib下,其他三个文件(ext.dic、IKAnalyzer.cfg.xml、stopword.dic)复制到F:\Mysolr\tomcat8\webapps\solr\WEB-INF\classes下。

4、在F:\Mysolr\solr home\lztweb\conf中找到managed-schema文件,不要删除,直接复制并重命名schema.xml。打开,加入:

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


5、重启tomcat。浏览器打开http://localhost:8080/solr/admin.html。选择一个core,点击Analysis,在右边框中输入一段话,下面Analyse Fieldname / FieldType选择 text_ik,没有话好好的去检查之前的配置。成功如下图:



二、导入数据库数据

一般solr导入数据库不常用,在实际开发中都是操作代码进行增删查改,不过还是要了解一下。

1、mysql新建测试表并导入数据:admin

/*
Navicat MySQL Data Transfer

Source Server         : lzt
Source Server Version : 50716
Source Host           : localhost:3306
Source Database       : solr

Target Server Type    : MYSQL
Target Server Version : 50716
File Encoding         : 65001

Date
4000
: 2017-09-28 16:13:05
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `admin`
-- ----------------------------
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`message` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of admin
-- ----------------------------
INSERT INTO `admin` VALUES ('1', '小明', '19', '123123');
INSERT INTO `admin` VALUES ('2', '小红', '20', '啦啦啦啦');
INSERT INTO `admin` VALUES ('3', '小军', '21', '你好');
INSERT INTO `admin` VALUES ('4', '小林', '24', '分词不错');
INSERT INTO `admin` VALUES ('5', '小刚', '20', '你好啊');
INSERT INTO `admin` VALUES ('6', '小小', '25', '哈哈');
INSERT INTO `admin` VALUES ('7', '小敏1', '21', '啦啦啦');
INSERT INTO `admin` VALUES ('8', '小勇', '23', '你好');


2、找到F:\Mysolr\solr home\lztweb\conf目录下solrconfig.xml

打开,添加

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
      <lst name="defaults">
         <str name="config">data-config.xml</str>
      </lst>
 </requestHandler>


3、找到F:\Mysolr\solr-5.5.0\example\example-DIH\solr\solr\conf中的文件solr-data-config.xml,重命名为data-config.xml,并复制到F:\Mysolr\solr home\lztweb\conf目录下。打开,添加如下:

dataConfig>
<!-- 这是mysql的配置 -->
<dataSource driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/solr?useUnicode=true&characterEncoding=utf-8" user="root" password="123456"/>
<document>
<!-- name属性,就代表着一个文档,可以随便命名 -->
<!-- query是一条sql,代表在数据库查找出来的数据 -->
<entity name="admin" pk="id" query="select id,name,age,message from admin">
<!-- 每一个field映射着数据库中列与文档中的域,column是数据库列,name是solr的域(必须是在managed-schema文件中配置过的域才行) -->
<field column="id" name="id"/>
<field column="name" name="my_name"/>
<field column="age" name="my_age"/>
<field column="message" name="my_message"/>
</entity>
</document>
</dataConfig>


注意:不能直接写&符号连接进行数据库的的连接,要用&不然会报错,坑!

4、在managed-schema文件中配置域。

<field name="my_name" type="text_ik" indexed="true" stored="true"/>
<field name="my_age" type="int" indexed="true" stored="true"/>
<field name="my_message" type="text_ik" indexed="true" stored="true"/>


注意:千万别手贱添加id,eg:

<field name="my_id" type="int" indexed="true" stored="true"/>


然后在data-config.xml中定义:

<field column="id" name="my_id"/>


这样做数据导入不进去,会产生一个错误。Solr Document [null] missing required field: my_id 原因看:http://llwbrothers.blog.51cto.com/2360705/867477

5、数据导入,重启tomcat,打开浏览器链接,如下图操作:



6、查看数据

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: