实际工程应用中,从数据库导出数据创建索引再常见不过了,现在实验一下从数据库导入数据创建索引。

一、版本说明

Solr版本:4.7.0

数据库:sqlserver2005

二、配置步骤

1、  准备的jar包

1)  solr-dataimporthandler-extras-4.7.0.jar;在solr发布包solr-4.7.0\dist里面有

2)  solr-dataimporthandler-4.7.0.jar;在solr发布包solr-4.7.0\dist里面有

3)  jtds-1.2.2.jar;网上自己找

2、  修改solr的core配置

要想哪个core从数据库导入数据建索引就修改哪个core的配置。

2.1修改solrconfig.xml

添加如下这段配置:

[html] view plaincopy
  1. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  2. <lst name="defaults">
  3. <str name="config">data-config.xml</str>
  4. </lst>
  5. </requestHandler>

2.2添加data-config.xml

在solrconfig.xml同一个文件夹内建立data-config.xml,其配置如下:

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <dataConfig>
  3. <dataSource type="JdbcDataSource"
  4. driver="net.sourceforge.jtds.jdbc.Driver"
  5. url="jdbc:jtds:sqlserver://localHost/MyHousekeeper"
  6. user="sa"
  7. password="123456"/>
  8. <document>
  9. <entity name="pay" query="SELECT payId,payName,payMoney,payDescription,payDatetime FROM t_pay">
  10. <field column="payId"          name="id" />
  11. <field column="payName"        name="name" />
  12. <field column="payMoney"       name="money" />
  13. <field column="payDescription" name="description" />
  14. <field column="payDatetime"    name="datetime" />
  15. </entity>
  16. </document>
  17. </dataConfig>

2.3修改schema.xml

修改这个的目的是让solr知道有哪些field,是否需要索引,是否需要在索引库中存储原文,以及field类型。在上面的sql中有很多种数据类型。

payId:整型

payName:字符型

payMoney:浮点数

payDescription:大文本

payDatetime:日期时间格式

首先在schema.xml中申明field类型,配置在<types> </types>内。下面配置的sring类型是不会做分词处理的,视为完整的一个词,text_ik是一个中文分词器ik-analyzer,专门处理中文分词。

如下:

[html] view plaincopy
  1. <types>
  2. <fieldtype name="string"  class="solr.StrField"       sortMissingLast="true" omitNorms="true"/>
  3. <fieldType name="long"    class="solr.TrieLongField"  precisionStep="0" positionIncrementGap="0"/>
  4. <fieldType name="float"   class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
  5. <fieldType name="date"    class="solr.TrieDateField"  precisionStep="0" positionIncrementGap="0"/>
  6. <fieldType name="text_ik" class="solr.TextField">
  7. <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  8. </fieldType>
  9. </types>

然后申明field,field的名字应该和sql的查询结果集列名一致,如果不一致,需要在data-config.xml中entity标签中用field指明列和field的对应关系。

Field配置如下:

[html] view plaincopy
  1. <fields>
  2. <field name="_version_"       type="long"       indexed="true"  stored="true"/>
  3. <field name="id"              type="long"       indexed="true"  stored="true"  multiValued="false" required="true"/>
  4. <field name="name"            type="string"     indexed="true"  stored="true"  multiValued="false" />
  5. <field name="money"           type="float"      indexed="true"  stored="true"  multiValued="false" />
  6. <field name="description"     type="text_ik"    indexed="true"  stored="true"  multiValued="false" />
  7. <field name="datetime"        type="date"       indexed="true"  stored="true"  multiValued="false" />
  8. </fields>

其中如下field是必须的,用于标记版本信息,由solr内部自己维护。

[html] view plaincopy
  1. <field name="_version_"       type="long"       indexed="true"  stored="true"/>

三、导入测试

进入solr管理界面,command选择full-import全部导入;entity需要导入的实体,也就是配置的哪个sql,点击execute执行导入,如果数据很多的话需要导一段时间,不时的点一下refresh status刷新一下,看看导入是否完成,导入完成后会告诉你导入了多少数据,用了多少时间。如下图

做个查询测试,query,

q,description:米;查询description这个field名的米相关数据

wt,json;查询结果返回格式,默认json

execute query,执行查询,看到返回的json格式的查询结果了。

参考文献:

1)  http://www.chepoo.com/solr4-database-import-create-index.html

2)  http://blog.csdn.net/bruce128/article/details/17796705

转载于:https://www.cnblogs.com/duyinqiang/p/5696729.html

Solr4.7从数据库导数据相关推荐

  1. python如何修改excel数据库_python学习笔记-day7-2-【python从mysql数据库导数据到excel,读excel,修改excel】...

    这节说下如何用python把数据库里的数据导出到excel里,并如何读取excel, 修必excel等操作. 一.用python把数据库里的数据导出到excel里 1.导入如下的模块,没有的话需要安装 ...

  2. 第三章:Solr4.7以DIH的方式从数据库导数据

    实际工程应用中,从数据库导出数据创建索引再常见不过了,现在实验一下从数据库导入数据创建索引 一.版本说明 Solr版本:4.7.0 数据库:sqlserver2005 二.配置步骤 1. 准备的jar ...

  3. mysql批量创建数据库 导数据

    由于近来需要从其它机器拉一堆数据到一台机器上做数据分析,由于涉及到数据库比较,数据也不大不小的,要手工一个一倒腾真是累的半死,于是弄了个脚本 实现功能,根据指定文件下的数据库文件命令格式, str=1 ...

  4. ×××数据库导数据ora-01400错误小计

    ×××源端和目标段的数据库版本都是11.2.0.1 使用exp.imp导入导出 导入目标库时会报ora-01400的错误 IMP-00019: row rejected due to ORACLE e ...

  5. exp导oracle数据库,使用exp/imp 在oracle数据库间导数据

    最近工作需要将oracle数据库的表数据导出到另一个oracle数据库表,找到了oracle 自带的命令行,并记录下导数据过程. 导数据过程分以下几步: 假设源数据库为A,目标数据库为B 1.在B上通 ...

  6. kettle导数据入HBase数据库报错解决

    问题:kettle导数据入HBase数据库,转化中到组件HBase output时报如下错误消息: Cant find incoming field "{0}" defined i ...

  7. 异构数据库之间完全可以用SQL语句导数据 ths 碧血剑!

    问题:异构数据库之间完全可以用SQL语句导数据.大家抛弃BatchMove吧 如果觉得好请Up一下,如果觉得不好也请Up一下 ( 积分:1, 回复:684, 阅读:43158 ) 分类:数据库-C/S ...

  8. Oracle数据库exp和imp方式导数据

    这里导入导出路径都在D盘下,默认文件名为:example.dmp exp方式导出数据 相关参数项如下: 关键字 说明 默认 USERID 用户名/口令 FULL 导出整个文件 (N) BUFFER 数 ...

  9. solr 从数据库导入数据,全量索引和增量索引(实例配置原理)

    http://blog.csdn.net/u013378306/article/details/50761610 为防止原文删除特此备份 ------------------------------- ...

最新文章

  1. 向下钻取按钮位置设置
  2. celery 可视化_在Flask中使用Celery进行多任务分布执行
  3. 使用nginx解决跨域问题
  4. jdbc查看网络状态
  5. 西安科技大学计算机考研难度,西安科技大学考研难吗
  6. traceping是什么意思_trace命令是什么意思?
  7. oracle查看jdk文档_Oracle JDK 9 Early Access文档已更新
  8. MapReduce 作业调试
  9. hdu 2184 01背包变形
  10. UltraEdit(UE)如何设置去掉.bak备份文件?
  11. mysql if没用_关于MySql中使用IFNULL()函数失效的问题。
  12. datagridview表中插入一行_excel表格技巧:Ctrl+T在超级表中的妙用
  13. 焊工作业2021年压力焊题库
  14. 2022华为杯研究生数学建模竞赛F题思路解析
  15. 微服务架构设计思维导图总结
  16. java制作qq自动回复,qq自动回复机器人-qq自动回复机器人 v1.6 电脑版
  17. 一键进入高通9008模式_专属冬天的热饮,一键进入圣诞模式!
  18. 智能影视站系统 光线 CMS1.5 正式版
  19. 烙铁-电子工程师的画笔
  20. 我的世界服务器成就系统的其他成就是什么,大量的成就奖励亟待领取!《我的世界》【PC版】Hypixel服务器成就系统来啦~...

热门文章

  1. [转]PowerDesigner使用教程 —— 概念数据模型
  2. 委托C# 生活 实例
  3. 表变量与临时表的优缺点?(ZT)
  4. Michael A. Cusumano
  5. competition in a limited resource
  6. 老鼠实验中老鼠的数量变化曲线
  7. C++构造函数调用虚函数的后果
  8. ubuntu-10.04硬盘安装挫折略记
  9. Spring系列之AOP分析之为目标类挑选合适的Advisor(五)
  10. 对于防止匿名评论/访问的操作