Solr学习笔记之3、Solr导入SQLServer数据建立索引

一、下载MSSQLServer的JDBC驱动

下载:Microsoft JDBC Driver 4.0 for SQL Server

地址:http://www.microsoft.com/zh-CN/download/details.aspx?displaylang=en&id=11774

二、配置Solr dataimport for SQLServer

1、依赖jar包配置

将MSSQLServer的JDBC驱动中的sqljdbc4.jar复制到\tomcat\webapps\solr\WEB-INF\lib文件夹中。

将solr-dataimporthandler-4.7.0.jar和solr-dataimporthandler-extras-4.7.0.jar复制到\tomcat\webapps\solr\WEB-INF\lib文件夹中。

2、solrconfig.xml配置

在Solr对应core的配置文件中(如:SolrSingle\collection1\conf),打开solrconfig.xml文件,新增如下节点:

  1. <!--导入-->
  2. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  3. <lst name="defaults">
  4. <str name="config">data-config.xml</str>
  5. </lst>
  6. </requestHandler>

然后在同一目录下新增data-config.xml文件。

3、data-config.xml文件配置如下:

一对一模式:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <dataConfig>
  3. <dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost:1433;DatabaseName=SolrDemoDB;username=sa;password=123456" user="sa" password="123456" batchSize="100"/>
  4. <document>
  5. <entity
  6. name="Article"
  7. pk="ArticleId"
  8. query="select * from Article where IsDelete=0"
  9. deltaQuery="select ArticleId from Article where CreateDate > '${dataimporter.last_index_time}'"
  10. deletedPkQuery="select ArticleId from Article where IsDelete=1"
  11. deltaImportQuery="select * from Article where ArticleId='${dataimporter.delta.ArticleId}'"
  12. transformer="ClobTransformer,HTMLStripTransformer,DateFormatTransformer" >
  13. <field column="ArticleId" name="ArticleId" />
  14. <field column="Title" name="Title" />
  15. <field column="CreateDate" name="CreateDate" dateTimeFormat="yyyy-MM-dd" />
  16. <field column="IsDelete" name="IsDelete" />
  17. <field column="Content" name="Content" />
  18. <field column="TypeId" name="TypeId" />
  19. <entity name="ArticleType" query="select * from ArticleType where TypeId=${Article.TypeId}">
  20. <field column="ArticleTypeName" name="ArticleTypeName" />
  21. </entity>
  22. </entity>
  23. </document>
  24. </dataConfig>

<!--query:查询数据库表符合记录数据-->
<!--deltaQuery:查询出需要增量索引的数据,所有经过修改的记录的Id,可能是修改操作、添加操作、删除操作产生的(此查询只对增量导入起作用,而且只能返回Id值) -->
<!--deletedPkQuery:查询出需要删除的数据记录主键Id,solr通过它来删除索引里面对应的数据(此查询只对增量导入起作用,而且只能返回ID值)-->
<!--deltaImportQuery:次查询是获取以上两步的Id,然后把其全部数据获取,根据获取的数据,对索引库进行更新操作,可能是删除,添加,修改(此查询只对增量导入起作用,可以返回多个字段的值,一般情况下,都是返回所有字段的列)-->
<!--transformer:格式转化-->

对应在schema.xml文件中的field设置为:

  1. <!--Article Begin-->
  2. <field name="ArticleId" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
  3. <field name="Title" type="text_general" indexed="true" stored="true"/>
  4. <field name="CreateDate" type="date" indexed="true" stored="true"/>
  5. <field name="IsDelete" type="boolean" indexed="true" stored="true"/>
  6. <field name="Content" type="text_general" indexed="true" stored="true"/>
  7. <field name="TypeId" type="int" indexed="true" stored="true"/>
  8. <field name="ArticleTypeName" type="string" indexed="true" stored="true" />
  9. <!--Article End-->
  10.  
  11. <uniqueKey>ArticleId</uniqueKey>

一对多模式:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <dataConfig>
  3. <dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost:1433;DatabaseName=SolrDemoDB;username=sa;password=123456" user="sa" password="123456" batchSize="100"/>
  4. <document>
  5. <entity name="ArticleType" pk="TypeId" query="select * from ArticleType">
  6. <field column="ArticleTypeName" name="ArticleTypeName" />
  7. <field column="TypeId" name="TypeId" />
  8. <entity name="Article" pk="ArticleId" query="select * from Article where IsDelete=0 and TypeId=${ArticleType.TypeId}">
  9. <field column="ArticleId" name="ArticleId" />
  10. <field column="Title" name="Title" />
  11. <field column="CreateDate" name="CreateDate" dateTimeFormat="yyyy-MM-dd" />
  12. <field column="IsDelete" name="IsDelete" />
  13. <field column="Content" name="Content" />
  14. <field column="TypeId" name="TypeId" />
  15. </entity>
  16. </entity>
  17. </document>
  18. </dataConfig>

对应在schema.xml文件中的field设置为:

  1. <!--Article Begin-->
  2. <field name="ArticleId" type="string" indexed="true" stored="true" required="true" multiValued="true"/>
  3. <field name="Title" type="text_general" indexed="true" stored="true" multiValued="true"/>
  4. <field name="CreateDate" type="date" indexed="true" stored="true" multiValued="true"/>
  5. <field name="IsDelete" type="boolean" indexed="true" stored="true" multiValued="true"/>
  6. <field name="Content" type="text_general" indexed="true" stored="true" multiValued="true"/>
  7.  
  8. <field name="TypeId" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
  9. <field name="ArticleTypeName" type="string" indexed="true" stored="true" />
  10. <!--Article End-->
  11.  
  12. <uniqueKey>TypeId</uniqueKey>

4、在数据库中添加相应的数据库及数据表

此文示例数据库为SolrDemoDB,示例数据表为:Article。

5、重启tomcat,访问http://localhost:8080/solr/。看到如下页面,则说明成功。

6、solr dataimport commond

全量索引:http://ip:port/webapp_name/core_name/dataimport?command=full-import&clean=false&commit=true
增量索引:http://ip:port/webapp_name/core_name/dataimport?command=delta-import&clean=false&commit=true

备注:可在Client端通过http请求,来发送命令。

参数说明:

  • full-import : "全量导入"这个操作可以通过访问URL http://:/solr/dataimport?command=full-import 完成。

    • 这个操作,将会新起一个线程。response中的attribute属性将会显示busy。

    • 这个操作执行的时间取决于数据集的大小。

    • 当这个操作运行完了以后,它将在conf/dataimport.properties这个文件中记录下这个操作的开始时间

    • 当“增量导入”被执行时,stored timestamp这个时间戳将会被用到

    • solr的查询在“全量导入”时,不是阻塞的

    • 它还有下面一些参数:

      • clean : (default 'true'). 决定在建立索引之前,删除以前的索引。

      • commit: (default 'true'). 决定这个操作之后是否要commit

      • optimize: (default 'true'). 决定这个操作之后是否要优化。

      • debug : (default false). 工作在debug模式下。详情请看 the interactive development mode (see here)

  • delta-import : 当遇到一些增量的输入,或者发生一些变化时使用http://:/solr/dataimport?command=delta-import . 它同样支持  clean, commit, optimize and debug 这几个参数.

  • status : 想要知道命令执行的状态 , 访问 URL http://:/solr/dataimport?command=status.它给出了关于文档创建、删除,查询、结果获取等等的详细状况。

  • reload-config : 如果data-config.xml已经改变,你不希望重启solr,而要重新加载配置时,运行一下的命令http://:/solr/dataimport?command=reload-config

  • abort : 你可以通过访问 url http://:/solr/dataimport?command=abort 来终止一个在运行的操作

转载请保留本文地址:http://www.cnblogs.com/wangwangfei/p/3598462.html

Solr学习笔记之3、Solr dataimport - 从SQLServer导入数据建立索引的更多相关文章

  1. Solr学习笔记之2、集成IK中文分词器

    Solr学习笔记之2.集成IK中文分词器 一.下载IK中文分词器 IK中文分词器 此文IK版本:IK Analyer 2012-FF hotfix 1 完整分发包 二.在Solr中集成IK中文分词器 ...

  2. Solr学习笔记之1、环境搭建

    Solr学习笔记之1.环境搭建 一.下载相关安装包 1.JDK 2.Tomcat 3.Solr 此文所用软件包版本如下: 操作系统:Win7 64位 JDK:jdk-7u25-windows-i586 ...

  3. Solr学习笔记之5、Component(组件)与Handler(处理器)学习

    Solr学习笔记之5.Component(组件)与Handler(处理器)学习 一.搜索篇 拼写检查(spellCheck) 作用:用来检查用户输入的检索内容是否存在,如果不存在则给它提示出相近或相似 ...

  4. Solr学习笔记之4、Solr配置文件简介

    Solr学习笔记之4.Solr配置文件简介 摘自<Solr in Action>. 1. solr.xml – Defines one or more cores per Solr ser ...

  5. solr学习笔记-入门

    solr学习笔记 1.安装前准备 solr依赖java 8 运行环境,所以我们先安装java.如果没有java环境无法启动solr服务,并且会看到如下提示: [root@localhost solr- ...

  6. SQL反模式学习笔记22 伪键洁癖,整理数据

    目标:整理数据,使不连续的主键Id数据记录变的连续. 反模式:填充断档的数据空缺. 1.不按照顺序分配编号 在插入新行时,通过遍历表,找到的第一个未分配的主键编号分配给新行,来代替原来自动分配的伪主键 ...

  7. 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据

    相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...

  8. solr学习笔记

    目录 前言 linux部署 使用 配置 使用 前言 solr是apach基于Lucene开发的成熟的框架,这里我们学习如何部署.使用.关于集群会在后面继续添加 linux部署 mkdir /usr/l ...

  9. Solr学习笔记-在Tomcat上部署执行Solr

    上一篇我们初识了Solr而且学习了Jetty的启动方式.查看了Solr的管理界面,这一篇我们来实如今Tomcat上部署执行Solr. 部署环境: window7 jdk1.6.0_14 Solr-4. ...

随机推荐

  1. 调试工具GDB详解

    1 简介 2 生成调试信息 3 启动GDB 的方法 4 程序运行上下文 4.1 程序运行参数 4.2 工作目录 4.3 程序的输入输出 5 设置断点 5.1 简单断点 5.2 多文件设置断点 5.3 ...

  2. MVC学习笔记---MVC的处理管线

    漫步ASP.NET MVC的处理管线   ASP.NET MVC从诞生到现在已经好几个年头了,这个框架提供一种全新的开发模式,更符合web开发本质.你可以很好的使用以及个性化和扩展这个框架,但这需要你 ...

  3. ***CI中的数据库操作(insert_id新增后返回记录ID)

    在system/application/config 文件夹和里面的config文件里已经配置了参数 $active_group = "default";$db['default' ...

  4. Net4.0---AspNet中URL重写的改进(转载)

    转载地址:http://www.cnblogs.com/oec2003/archive/2010/07/27/1785862.html URL重写有很多的好处,如有利于SEO.便于记忆.隐藏真实路径使 ...

  5. Java Hour 12 Generic

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 本文作者Java 现经验约为12 Hour,请各位不吝赐教. 泛型程序设计 为 ...

  6. pagefile.sys and heberfil.sys

    dub 删除heberfil.sys大文件的方法 方法1:Windows/system32中的cmd.exe  输入 powercfg -h off,即可关闭休眠功能,同时 Hiberfil.sys ...

  7. 在crontab中动态写日志

    45 3 * * * setsid script -c /home/dlht/shell/coreBusiness/coreOpt.sh  >> /home/dlht/logs/coreO ...

  8. java的split的坑,会忽略空值

    String test = "@@@@"; String[] arrayTest = test.split("\\@"); System.out.println ...

  9. mysql指定某行或者某列的排序

    方法: 通过desc: 都无法实现: 方法一: select sp.productid,sp.productname,ss.sku from sp_product sp inner join sku_ ...

  10. SignalR —— Asp.net RealTime的春天

    一般的例子:http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-gettin ...