Solr 连接数据库
实际工程应用中,从数据库导出数据创建索引再常见不过了,现在实验一下从数据库导入数据创建索引。
一、版本说明
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
Solr 连接数据库的更多相关文章
- solr与.net系列课程(三)solr连接数据库
solr与.net系列课程(三)solr连接数据库 上一章直接讲述的配置文件把大部分人看的很迷惑,大家都想听的是solr到底是怎么用的,好,这一节我们就开始链接数据库,首先讲一下连接之前都要配置哪些 ...
- solr连接数据库
solr与.net系列课程(三)solr连接数据库 solr与.net系列课程(三)solr连接数据库 上一章直接讲述的配置文件把大部分人看的很迷惑,大家都想听的是solr到底是怎么用的,好,这 ...
- solr连接数据库配置
一般要搜索的信息都是被存储在数据库里面的,但是我们不能直接搜数据库,所以只有借助Solr将要搜索的信息在搜索服务器上进行索引,然后在客户端供客户使用. 一.链接数据库 1. SQL配置 拿SQL Se ...
- solr DIH 知识梳理
solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...
- solr 6.1 服务端 tomcat 搭建及调用
一.下载 apache solr6.1.0 最新版本zip,解压缩生成一个solr6.1.0文件夹 二.安装 1.在d:/projects下新建一个solr 2.把solr6.1.0/server/s ...
- solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据
solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...
- 开源搜索引擎Solr的快速搭建及集成到企业门户最佳实施方案--转载
笔者经过研究查阅solr官方相关资料经过两周的研究实现了毫秒级百万数据的搜索引擎的搭建并引入到企业门户.现将实施心得和步骤分享一下. 1. jdk1.6 安装jdk1.6到系统默认目录下X: ...
- Apache Solr采用Java开发、基于Lucene的全文搜索服务器
http://docs.spring.io/spring-data/solr/ 首先介绍一下solr: Apache Solr (读音: SOLer) 是一个开源.高性能.采用Java开发.基于Luc ...
- lucene solr
理解 lucene 是一个全文搜索的引擎 solr是全文搜索的web实现 --------------------. java.lang.UnsupportedClassVersionError: ...
随机推荐
- ORA-00824:cannot set SGA_TARGET or MEMORY_TARGET due to existing internal settings
练习时执行一条修改数据库连接数的语句: alter system set processes=1 scope=spfile; 然后关闭数据库: shutdown 再启动数据库时,出现异常,报错信息如下 ...
- List Copy
//要复制的实例必须可序列化,包括实例引用的其它实例都必须在类定义时加[Serializable]特性. public static T Copy<T>(T RealObject) { u ...
- https_request
<?php $access_token = ); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_se ...
- Android开发中Bundle用法包裹数据(转)
Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...
- PHP扩展开发
安装好php,进入安装目录. zbseoag@ubuntu:/usr/local/php-5.6.28/ext$ ./ext_skel --extname=mytest zbseoag@ubuntu: ...
- zookeeper中client命令实践
Welcome to ZooKeeper! 2016-09-14 16:06:04,528 [myid:] - INFO [main-SendThread(master:2181):ClientCnx ...
- div垂直居中 css div盒子上下垂直居中
div垂直居中 css div盒子上下垂直居中,让DIV盒子在任何浏览器中任何分辨率的显示屏浏览器中处于水平居中和上下垂直居中. div垂直居中常用于单个盒子,如一个页面里只有一个登录布局,使用div ...
- [LintCode] Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- 实践1-qq邮箱主页
纯html的网页 采用table分割板块进行布局 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- Converting Stream to String and back…what are we missing?
string test = "Testing 1-2-3"; // convert string to stream byte[] byteArray = Encoding.ASC ...