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

一、版本说明

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

添加如下这段配置:

  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,其配置如下:

  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,专门处理中文分词。

如下:

  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配置如下:

  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内部自己维护。

  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

Solr 连接数据库的更多相关文章

  1. solr与.net系列课程(三)solr连接数据库

     solr与.net系列课程(三)solr连接数据库 上一章直接讲述的配置文件把大部分人看的很迷惑,大家都想听的是solr到底是怎么用的,好,这一节我们就开始链接数据库,首先讲一下连接之前都要配置哪些 ...

  2. solr连接数据库

    solr与.net系列课程(三)solr连接数据库    solr与.net系列课程(三)solr连接数据库 上一章直接讲述的配置文件把大部分人看的很迷惑,大家都想听的是solr到底是怎么用的,好,这 ...

  3. solr连接数据库配置

    一般要搜索的信息都是被存储在数据库里面的,但是我们不能直接搜数据库,所以只有借助Solr将要搜索的信息在搜索服务器上进行索引,然后在客户端供客户使用. 一.链接数据库 1. SQL配置 拿SQL Se ...

  4. solr DIH 知识梳理

    solr DIH 知识梳理 web.xml中listener配置 <listener> <listener-class>org.apache.solr.handler.data ...

  5. solr 6.1 服务端 tomcat 搭建及调用

    一.下载 apache solr6.1.0 最新版本zip,解压缩生成一个solr6.1.0文件夹 二.安装 1.在d:/projects下新建一个solr 2.把solr6.1.0/server/s ...

  6. solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据

    solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...

  7. 开源搜索引擎Solr的快速搭建及集成到企业门户最佳实施方案--转载

    笔者经过研究查阅solr官方相关资料经过两周的研究实现了毫秒级百万数据的搜索引擎的搭建并引入到企业门户.现将实施心得和步骤分享一下. 1.      jdk1.6 安装jdk1.6到系统默认目录下X: ...

  8. Apache Solr采用Java开发、基于Lucene的全文搜索服务器

    http://docs.spring.io/spring-data/solr/ 首先介绍一下solr: Apache Solr (读音: SOLer) 是一个开源.高性能.采用Java开发.基于Luc ...

  9. lucene solr

    理解 lucene 是一个全文搜索的引擎 solr是全文搜索的web实现 --------------------.  java.lang.UnsupportedClassVersionError:  ...

随机推荐

  1. php加密解密

    <?php . [代码][PHP]代码      <?php , ;         return setcookie($name, $value, $expire, $path, $do ...

  2. ML 03、机器学习的三要素

    机器学习算法原理.实现与实践——机器学习的三要素 1 模型 在监督学习中,模型就是所要学习的条件概率分布或决策函数.模型的假设空间包含所有可能的条件概率分布或决策函数.例如,假设决策函数是输入变量的线 ...

  3. C++primer学习笔记(四)——Chapter 6

    6.1  Function Basics 一.函数的构造 type functionName( parameters list) statement 1.首先格式如上,一个函数一定要有返回值的类型ty ...

  4. Python实践:开篇

    一.概述 Python实践 是应用Python解决实际问题的案例集合,这些案例中的Python应用通常 功能各异.大小不一. 该系列文章是本人应用Python的实践总结,会不定期更新. 二.目录 Py ...

  5. js:语言精髓笔记13--语言技巧

    消除代码全局变量名占用: //本质是使用匿名函数: void function(x, y, z) { console.log(x + y + z); }(1,2,3); //要使函数内的变量不被释放, ...

  6. aaaaaaaaaaaaaa

    方法和事件的区别是? For(var 0 in file) Foreach(var i=0;i<length.i++) Git stash Git pull –rebase origin bra ...

  7. Windows内核下操作字符串!

    * Windows内核下操作字符串! */ #include <ntddk.h> #include <ntstrsafe.h> #define BUFFER_SIZE 1024 ...

  8. Piggy-Bank[HDU1114]

    Piggy-Bank Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  9. BZOJ3619 : [Zjoi2014]璀灿光华

    终于把省选时的遗憾补上了… 对于构造立方体: 首先BFS构出底层,然后再逐层构造立方体 对于计算: $O(n^6)$爆搜即可. #include<cstdio> #include<c ...

  10. 移动互联网终端的touch事件,touchstart, touchend, touchmove

    如果我们允许用户在页面上用类似桌面浏览器鼠标手势的方式来控制WEB APP,这个页面上肯定是有很多可点击区域的,如果用户触摸到了那些可点击区域怎么办呢??诸如智能手机和平板电脑一类的移动设备通常会有一 ...