目录

前 言

环境准备

集成  Dataimport 插件

重启 Tomcat 导入数据


前 言

1、本文承接《Solr 4.10.3 集成 IK Analyzer 2012FF 中文分词器》,在 Solr 集成 中文分词器之后,现在来掌握 Solr 批量导入 Mysql 数据

2、使用 Dataimport 插件批量导入数据库数据步骤如下:

第一步:把 dataimport 插件依赖的 jar 包添加到 solrcore(如collection1)下的 lib 目录中,包括 Mysql 连接驱动包。

第二步:配置 solrconfig.mxl 文件,添加一个数据导入的 requestHandler。

第三步:创建一个 data-config.xml,保存到 collection1\conf\ 目录下 ,用于连接数据库,以及字段转换。

第四步:重启 tomcat,进行数据导入

环境准备

准备数据库

1、需求很明确:就是将 Mysql 数据库中的表数据批量导入到 Solr 文档中。

2、以如下所示的数据库表数据为例,表字段的数据类型将来会和 Solr 的 FieldType 进行转换。

自定义文档域

1、无论是否导入 Mysql 数据到 Solr 中,还是实际项目中通过 Solr 进行全文检索 或者 文档保存,都应该先创建 Field 与 FieldType,如果不熟悉可以参考《 Solr 4.10.3 schema.xml 域类型详解》

2、文档域都是 先创建,后使用,虽然 Solr 的 schema.xml 文件本身已经自带了一些,但是为了更加清晰,建议新建。

3、如同应用中约定好 POJO 类之后,就会新建 Mysql 数据库表一样,Solr 同样需要定义与 POJO 对应的域。

    <!-- IKAnalyzer--><fieldType name="text_ik" class="solr.TextField"><analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/></fieldType><!--IKAnalyzer Field--><field name="title_ik" type="text_ik" indexed="true" stored="true" multiValued="true"/><field name="content_ik" type="text_ik" indexed="true" stored="true" multiValued="true"/><field name="name_ik" type="text_ik" indexed="true" stored="true"/><!-- New Entity --><field name="news_title" type="text_ik" indexed="true" stored="true"/><field name="new_publishTime" type="date" indexed="true" stored="true"/><field name="news_originName" type="text_ik" indexed="true" stored="true"/><field name="news_originUrl" type="string" indexed="true" stored="true"/><field name="news_content" type="text_ik" indexed="true" stored="true"/><field name="news_text" type="text_ik" indexed="true" stored="false" multiValued="true"/><copyField source="news_title" dest="news_text"/><copyField source="news_originName" dest="news_text"/><copyField source="news_content" dest="news_text"/>
</schema>
name="news_title" 虽然 Mysql 中是 “title”,但为了区别于 schema.xml 默认的 “title”,统一加上前缀为 “new_title”。
type="text_ik" Ik-Analyzer 中文分词器,标题、来源网站名称、新闻内容 都需要采用中文分词
name="news_publishTime"

对应 Mysql 的 publishTime,域类型为 date(日期),可以参考 schema.xml 文件默认的如下一句:

<field name="last_modified" type="date" indexed="true" stored="true"/>

name="news_originUrl" type="string"

对应 Mysql 的 originUrl,这个自动表示新闻的来源地址,所以不需要中文分词,可以参考 schema.xml 中的其它配置,如:

<field name="content_type" type="string" indexed="true" stored="true" multiValued="true"/>

name="news_content" 对应 Mysql 的 content,因为 schema.xml 默认也有一个 content 域,所以建议不要一致。

《 Solr 4.10.3 schema.xml 域类型详解》中已经说过 <copyField 域的作用,schema.xml 中默认有一个叫 "text" 域,可以仿写,如上所示,这样以后检索 "news_text" 域的时候,等同于同时检索 news_title、news_originName、news_content。

集成  Dataimport 插件

导入 Jar 包

1、把 dataimport 插件依赖的 jar 包添加到 solrcore(如collection1)下的 lib 目录中,包括 Mysql 连接驱动包。

2、dataimport 插件的 jar 包可以在下载好的 Solr 应用中的 dist 目录下找到

3、mysql 数据库连接驱动包对于 Java 开发人员来说自然不能找。

4、如下所示,将准备好的 dataimport 插件包和 mysql 数据库驱动包,放入 SolrHome 下的 SolrCore 下的 lib 目录中,lib 目录默认是没有的,手动新建即可

配置 solrconfig.xml

1、配置 solrconfig.mxl 文件,添加一个数据导入的 requestHandler

2、如下所示是 "/dataImport" 内容部分,添加的位置与 solrconfig.xml 默认已经存在的请求同级即可,如 "/select" 就是默认存在的请求。

  <!-- SearchHandlerhttp://wiki.apache.org/solr/SearchHandlerFor processing Search Queries, the primary Request Handlerprovided with Solr is "SearchHandler" It delegates to a sequentof SearchComponents (see below) and supports distributedqueries across multiple shards--><!-- Data Import  wangMaoXiong --><requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst></requestHandler> <requestHandler name="/select" class="solr.SearchHandler"><!-- default values for query parameters can be specified, thesewill be overridden by parameters in the request--><lst name="defaults"><str name="echoParams">explicit</str><int name="rows">10</int><str name="df">text</str></lst>

创建 data-config. xml

1、创建一个 data-config.xml,保存到 collection1\conf\ 目录下 ,用于连接数据库,以及字段转换。

2、data-config.xml 这个文件名称可以自取,保持和 solrconfig.xml 中配置的一样即可,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>   <dataSource type="JdbcDataSource"   driver="com.mysql.jdbc.Driver"   url="jdbc:mysql://localhost:3306/test"   user="root"   password="root"/>   <document>   <entity name="news" query="SELECT id,title,publishTime,originName,originUrl,content FROM news"><field column="id" name="id"/> <field column="title" name="news_title"/> <field column="publishTime" name="new_publishTime"/> <field column="originName" name="news_originName"/> <field column="originUrl" name="news_originUrl"/> <field column="content" name="news_content"/> </entity>   </document>
</dataConfig>

<dataSource:连接数据库的配置信息,配置数据源

<document:Solr 文档配置

<entity:实体类配置

name="news" :POJO 名称

query=xxx:查询被导入 Mysql 数据库表数据的 SQL,需要哪些字段就查询哪些字段。

<field column="xxx" name="yyy":表示 Solr 域 与 Mysql 字段的对应关系。column 的值是 Mysql 数据库表的字段名;name 的值是 SolrCore 下的 schema.xml 中事先定义好的 Field(域)。

重启 Tomcat 导入数据

1、重启部署了 Solr 应用的 Tomcat 服务器,然后访问 Solr

Command->full-import:全部导入

Clean:清理,意思是导入数据之前,会先删除 Solr 中原来的所有数据,默认是勾选的,如果需要保留 Solr 中原来的数据,则切记要取消勾选。

Commit:提交,即执行数据导入的时候自动提交,默认勾选

Optimize:优化

Entity:实体,即  data-config.xml 文件中配置的 <entity 实体,可以选择其中一个实体进行导入,不选时,表示执行所有实体导入。

Execute:执行,点击按钮之后就会开始数据导入

Redresh Status:刷新状态,点击 Execute 按钮执行数据导入后,默认状态是不会自动刷新的,此时可以点击此按钮进行刷新

Auto Refresh Status:勾选之后,点击 Execute 按钮执行数据导入,此时就会自动刷新状态

Solr 4.10.3 导入 Mysql 数据相关推荐

  1. solr两种安装、ik分词器设置、DIH导入mysql数据

    文章目录 solr 安装(内置方式) solr 安装(tomcat方式) IK中文分词器设置 solr数据操作 使用dataimport导入数据库数据 solr 安装(内置方式) 安装包 官网下载安装 ...

  2. Windows下Solr的安装与配置,附DIH全量导入MySQL数据、IK分词器配置详解——不用集成Tomcat

    Solr是Apache开源的比较稳定的一款全文搜索引擎,也是市面上相对比较流行的一款全文搜索引擎,好不好用你用过之后自有判断.今天给大家分享一下它的安装与配置,我用的是7.7.2版本.废话不多说,开搞 ...

  3. Sqoop在导入MySQL数据时遇到Timestamp列为0000-00-00 00:00:00报错

    为什么80%的码农都做不了架构师?>>>    Sqoop在导入MySQL数据时遇到Timestamp列为'0000-00-00 00:00:00'时报错,解决方法是:在JDBC连接 ...

  4. mysql导入access2016_php 导入mysql数据到access方法

    我们来看看关于php 导入mysql数据到access方法 哦,下面是一个简单的实例哦,如果你正在把mysql的数据导入到access的话看到这肯定肯定可以实例了. mysql数据库表sqltable ...

  5. 将Excel表格导入mysql数据表_如何把Excel导入mysql数据表的方法详解

    把Excel导入mysql数据表其实是一件非常的简单的事情了,我们可以通过多种方法来实现了,下面我们来看一些关于小编整理的把Excel导入mysql数据表的方法了. 方法一 把Excel导入mysql ...

  6. solr的DIH操作同步mysql数据

    1.创建MySQL数据 CREATE TABLE `city` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '城市编号', `pro ...

  7. 使用LOAD DATA和INSERT语句导入Mysql数据

    在"MySQL数据库(表)的基本操作"一节中我们创建过一个会员注册表"Users",这次我们就往这个表中以不同的方式导入数据. INSERT语句 关于INSER ...

  8. 【华为云技术分享】使用sqoop导入mysql数据到hive中

    Sqoop 是一个数据转储工具,它能够将 hadoop HDFS 中的数据转储到关系型数据库中,也能将关系型数据库中的数据转储到 HDFS 中. Apache Sqoop,是"SQL to ...

  9. python导入data-Python通过load data导入MySQL数据

    如何使用python连接MySQL数据库,并进行增删改查操作呢?如何将大批量数据导入数据库的情况,又该如何使用Python进行大数据的高效导入呢? 一.环境介绍 Python版本:Python3.6 ...

  10. mysql导入excel为什么丢行_Excel导入mysql数据丢掉

    Excel导入mysql数据丢失 昨天晚上弄了一个晚上都没解决,来这里求助下,谢谢各位了 for($j=3;$j<=$highestRow;$j++)//表头不读取 { $a = $objPHP ...

最新文章

  1. Android的自定义键盘颜色,android自定义键盘(解决弹出提示的字体颜色问题)
  2. PP生产订单成本的计划、控制和结算
  3. Entity Framework系列之DataBase First
  4. python编_python编
  5. 20170124L07-03-01老男孩linux运维实战培训-生产环境大于254台机器网段划分及路由解决方案案例...
  6. Tcpdump linux抓包软件详细使用
  7. java学习_Java学习路线图
  8. 手机号 ,邮箱,固定电话js验证,身份证号(正则表达式)
  9. 专接本C语言必背程序
  10. 计算机操作系统-6-并发程序设计
  11. wampserver大红色橘色变成绿色
  12. torch 中的 stft、torchaudio 中的 Spectrogram、Melscale、MelSpectrogram 的使用
  13. Sprint周期开发总结
  14. 从入门到冠军 中国移动人群画像赛TOP1经验学习研究
  15. activex服务器与com组件,COM和ActiveX控件设计.ppt
  16. Hyperledger Fabric Peer的内部工作原理和实现方法
  17. es 多索引联合查询_ES 的跨索引查询详细讲解
  18. 安装vue-cli创建项目的时候 gyp ERR! build error的npm包遇到以下错误
  19. linux vi把一个文件中的内容复制到另一个文件,vim - 将内容从一个文件复制并粘贴到vi中的另一个文件...
  20. Kaggle Top1% 是如何炼成的!

热门文章

  1. Server Application Error(IIS)
  2. 【数据分享】维基百科Wiki负面有害评论(网络暴力)文本数据多标签分类挖掘可视化
  3. 计算机存储地址如何,计算机内存地址只有5种表现形式吗,为什么?
  4. 《SpringBoot实战》笔记2
  5. 目标检测之Faster RCNN理论概述
  6. Python Sklearn.metrics 简介及应用示例(机器学习各种评价指标)
  7. Java中的list---ArrayList与LinkedList
  8. 开发板添加上 Web 界面+openwrt luci界面修改
  9. js能判断当前字符串是一个完整单词吗_LeetCode30串联所有单词的子串31下一个排列...
  10. shell 提取sql 的字段名表名_Mysql常用SQL语句集锦 |建议转发收藏