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
添加如下这段配置:
- <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
- <lst name="defaults">
- <str name="config">data-config.xml</str>
- </lst>
- </requestHandler>
2.2添加data-config.xml
在solrconfig.xml同一个文件夹内建立data-config.xml,其配置如下:
- <?xml version="1.0" encoding="UTF-8" ?>
- <dataConfig>
- <dataSource type="JdbcDataSource"
- driver="net.sourceforge.jtds.jdbc.Driver"
- url="jdbc:jtds:sqlserver://localHost/MyHousekeeper"
- user="sa"
- password="123456"/>
- <document>
- <entity name="pay" query="SELECT payId,payName,payMoney,payDescription,payDatetime FROM t_pay">
- <field column="payId" name="id" />
- <field column="payName" name="name" />
- <field column="payMoney" name="money" />
- <field column="payDescription" name="description" />
- <field column="payDatetime" name="datetime" />
- </entity>
- </document>
- </dataConfig>
2.3修改schema.xml
修改这个的目的是让solr知道有哪些field,是否需要索引,是否需要在索引库中存储原文,以及field类型。在上面的sql中有很多种数据类型。
payId:整型
payName:字符型
payMoney:浮点数
payDescription:大文本
payDatetime:日期时间格式
首先在schema.xml中申明field类型,配置在<types> </types>内。下面配置的sring类型是不会做分词处理的,视为完整的一个词,text_ik是一个中文分词器ik-analyzer,专门处理中文分词。
如下:
- <types>
- <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
- <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
- <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
- <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
- <fieldType name="text_ik" class="solr.TextField">
- <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
- </fieldType>
- </types>
然后申明field,field的名字应该和sql的查询结果集列名一致,如果不一致,需要在data-config.xml中entity标签中用field指明列和field的对应关系。
Field配置如下:
- <fields>
- <field name="_version_" type="long" indexed="true" stored="true"/>
- <field name="id" type="long" indexed="true" stored="true" multiValued="false" required="true"/>
- <field name="name" type="string" indexed="true" stored="true" multiValued="false" />
- <field name="money" type="float" indexed="true" stored="true" multiValued="false" />
- <field name="description" type="text_ik" indexed="true" stored="true" multiValued="false" />
- <field name="datetime" type="date" indexed="true" stored="true" multiValued="false" />
- </fields>
其中如下field是必须的,用于标记版本信息,由solr内部自己维护。
- <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
Solr4.7从数据库导数据的更多相关文章
- 使用APOC技术从MYSQL数据库导数据到Neo4j图数据库(JDBC)
Neo4j 数据导入 一.安装与部署Neo4j 直接在官网下载安装包安装,解压即可. 2.mysql ...
- 异构数据库之间完全可以用SQL语句导数据
告诉你一个最快的方法,用SQLServer连接DBF 在SQLServer中执行 SELECT * into bmk FROM OpenDataSource( ‘Microsoft.Jet.OLEDB ...
- sqlserver将数据库的数据导成excel文档方法
sqlserver将数据库的数据导成excel文档方法 最近公司需要下载uniport的数据跟之前的数据进行对比,所以避免不了需要将数据库的数据导出来,把SQLServer表中的数据导出为Excel文 ...
- Oracle数据库exp和imp方式导数据
这里导入导出路径都在D盘下,默认文件名为:example.dmpexp方式导出数据相关参数项如下: 关键字 说明 默认USERID 用户名/口令FULL ...
- NoSQL数据库:数据的一致性
NoSQL数据库:数据的一致性 读取一致性 强一致性 在任何时间访问集群中任一结点,得到的数据结果一致: 用户一致性 对同一用户,访问集群期间得到的数据一致: 解决用户一致性:使用粘性会话,将会话绑定 ...
- 将数据库的数据导入solr索引库中
在solr与tomcat整合文章中,我用的索引库是mycore,现在就以这个为例. 首先要准备jar包:solr-dataimporthandler-4.8.1.jar.solr-dataimport ...
- SQLServer导数据到Oracle
从SQLServer导数据到Oracle大概有以下几种方法: 使用SSMS的导出数据向导,使用Microsoft ODBC for Oracle或Oracle Provider for OLE DB连 ...
- 使用pyspark模仿sqoop从oracle导数据到hive的主要功能(自动建表,分区导入,增量,解决数据换行符问题)
最近公司开始做大数据项目,让我使用sqoop(1.6.4版本)导数据进行数据分析计算,然而当我们将所有的工作流都放到azkaban上时整个流程跑完需要花费13分钟,而其中导数据(增量)就占了4分钟左右 ...
- Oracle导数据到SQL server的方法总结
通过oracle10g 访问sql server 2008 导数据步骤 最近在项目中遇到要将Oracle数据库的数据导入到SQL server数据库中,解决办法如下: 一.准备工作 配置Oracle ...
随机推荐
- 代码收藏 JS实现页内查找定位功能
前部分为IE下搜索方法 用TextRange来实现 后部分为firefox.chrome下搜索方法 var nextIndex = 0; var searchValue = ''; var input ...
- Poj 1166 The Clocks(bfs)
题目链接:http://poj.org/problem?id=1166 思路分析:题目要求求出一个最短的操作序列来使所有的clock为0,所以使用bfs: <1>被搜索结点的父子关系的组织 ...
- Flex 内置验证器—验证用户输入
今晚对于Flex中的Validator类(所有验证器的父类)测试一下 ---->其中常用的验证类有StringValidator,NumberValidator,DateValidator 测试 ...
- 关于SpringMVC中找不到<mvc:resources/>标签的解决办法
在springMVC中我们经常会用到<mvc:resources/>标签,但是有些编辑器中的schema过于陈旧.导致找不到<mvc:resources/>标签. 经过试验,有 ...
- Swift:使用系统AVFoundation实现二维码扫描和生成
系统提供的AVCaptureSession仅仅适用于iOS7.0以上的系统.之前的请用Zbar来替代 下载地址:http://download.csdn.net/detail/huobanbengku ...
- 玩转Bootstarp(连载)
一.Bootstarp是什么? 简单.灵活的用于搭建WEB页面的HTML.CSS.JS的工具集 (基于HTML5和CSS3) 总结:简洁强大的前端开发框架,可以让WEB开发更迅速.更简单 二.如何使用 ...
- Nginx阅读笔记(二)之location的用法
两个配置文件 一: server { listen 80; # # 在本机所有ip上监听80,也可以写为192.168.1.202:80,这样的话,就只监听192.168.1.202上的80口 ser ...
- Spring读书笔记-----部署我的第一个Spring项目
一.Spring介绍 Spring是一个轻量级的Java EE容器,它也是一种从实际需求出发,着眼于轻便,灵活,易于开发,易测试和易部署的轻量级开发框架.Spring它完成了大量开发中的通用步骤,留给 ...
- pageContext.request.contextPath 和 request.getContextPath()
作用是取出部署的应用程序名,这样不管如何部署,所用路径都是正确的. El表达式的写法:${pageContext.request.contextPath} jsp的写法:<%=request.g ...
- spring bean管理 笔记1
轻量级,无侵入 Bean管理 1 创建applicationContext.xml 2 配置被管理的Bean 3 获取Bean pom.xml配置 <dependency> <gro ...
