当前位置: 首页 > news >正文

Solr4.7从数据库导数据

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

 

一、版本说明

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 plain copy 在CODE上查看代码片 派生到我的代码片
  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 plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3. <dataConfig>   
  4.   <dataSource type="JdbcDataSource"   
  5.               driver="net.sourceforge.jtds.jdbc.Driver"   
  6.               url="jdbc:jtds:sqlserver://localHost/MyHousekeeper"   
  7.               user="sa"   
  8.               password="123456"/>   
  9.   <document>   
  10.         <entity name="pay" query="SELECT payId,payName,payMoney,payDescription,payDatetime FROM t_pay">  
  11.         <field column="payId"          name="id" />  
  12.         <field column="payName"        name="name" />  
  13.         <field column="payMoney"       name="money" />  
  14.         <field column="payDescription" name="description" />  
  15.         <field column="payDatetime"    name="datetime" />  
  16.         </entity>   
  17.   </document>   
  18.   
  19. </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 plain copy 在CODE上查看代码片 派生到我的代码片
  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 plain copy 在CODE上查看代码片 派生到我的代码片
  1. <fields>     
  2.   <field name="_version_"       type="long"       indexed="true"  stored="true"/>  
  3.    
  4.   <field name="id"              type="long"       indexed="true"  stored="true"  multiValued="false" required="true"/>  
  5.   <field name="name"            type="string"     indexed="true"  stored="true"  multiValued="false" />   
  6.   <field name="money"           type="float"      indexed="true"  stored="true"  multiValued="false" />   
  7.   <field name="description"     type="text_ik"    indexed="true"  stored="true"  multiValued="false" />   
  8.   <field name="datetime"        type="date"       indexed="true"  stored="true"  multiValued="false" />   
  9.  </fields>  

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

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  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/5696730.html

相关文章:

  • 【转】 Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
  • hdu 2335 Containers
  • Druid Indexing 服务
  • iOS7中弹簧式列表的制作
  • python实现虚拟茶话会
  • IE6|IE7中li底部3px间距BUG
  • 移动前端开发之viewport的深入理解
  • 效率篇——AppleScript入门2
  • C# 利用socekt做到http监听,怎么样才能做到高性能
  • hadoop-2.2.0多个队列资源分配
  • 【安卓开发】Android系统中Parcelable和Serializable的区别
  • 《超能陆战队》人工智能离我们还有多远
  • NativeScript的开发体会
  • 《TCP/IP详解卷1》三:
  • ORACLE 多表关联 UPDATE 语句
  • 【Linux系统编程】快速查找errno错误码信息
  • 【知识碎片】第三方登录弹窗效果
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 2019年如何成为全栈工程师?
  • Angular 响应式表单 基础例子
  • avalon2.2的VM生成过程
  • axios 和 cookie 的那些事
  • Codepen 每日精选(2018-3-25)
  • Electron入门介绍
  • Git学习与使用心得(1)—— 初始化
  • golang中接口赋值与方法集
  • HTTP请求重发
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • javascript从右向左截取指定位数字符的3种方法
  • js操作时间(持续更新)
  • Making An Indicator With Pure CSS
  • React-redux的原理以及使用
  • React-生命周期杂记
  • Vue ES6 Jade Scss Webpack Gulp
  • vue.js框架原理浅析
  • Zsh 开发指南(第十四篇 文件读写)
  • 复杂数据处理
  • 前端面试题总结
  • 区块链分支循环
  • 设计模式 开闭原则
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 我看到的前端
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • (day6) 319. 灯泡开关
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十六)一篇文章学会Java的常用API
  • (十三)Maven插件解析运行机制
  • (转)iOS字体
  • (转)用.Net的File控件上传文件的解决方案