solr5.2.1连接数据库

1、首先下载连接数据库的驱动包mysql-connector-java-5.1.17-bin.jar,并将其放到solr的发布目录下:E:\apache-tomcat-7.0.62\webapps\solr\WEB-INF\lib

2、将E:\solr-5.2.1目录下的contrib和dist文件夹复制到Tomcat的根目录下

3、打开E:\apache-tomcat-7.0.62\solr\db\conf\solrconfig.xml,在solrconfig.xml文件中修改配置dist和contrib这两个文件夹的路径,找到如下配置:

 1 <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
 2
 3   <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
 4   <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
 5
 6   <lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />
 7   <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
 8
 9   <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
10   <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />
11
12   <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
13   <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />

将其修改为:

 1 <lib dir="../../dist/" regex="solr-dataimporthandler-.*\.jar" />
 2
 3   <lib dir="../../contrib/extraction/lib" regex=".*\.jar" />
 4   <lib dir="../../dist/" regex="solr-cell-\d.*\.jar" />
 5
 6   <lib dir="../../contrib/clustering/lib/" regex=".*\.jar" />
 7   <lib dir="../../dist/" regex="solr-clustering-\d.*\.jar" />
 8
 9   <lib dir="../../contrib/langid/lib/" regex=".*\.jar" />
10   <lib dir="../../dist/" regex="solr-langid-\d.*\.jar" />
11
12   <lib dir="../../contrib/velocity/lib" regex=".*\.jar" />
13   <lib dir="../../dist/" regex="solr-velocity-\d.*\.jar" />

4、将E:\solr-5.2.1\dist目录下的solr-dataimporthandler-5.2.1.jar和solr-dataimporthandler-extras-5.2.1.jar复制到E:\apache-tomcat-7.0.62\webapps\solr\WEB-INF\lib目录下

5、打开E:\apache-tomcat-7.0.62\solr\db\conf\solrconfig.xml,在solrconfig.xml中配置db-data-config.xml的位置,这个文件用于配置连接数据库的信息。

1     <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
2         <lst name="defaults">
3             <str name="config">E:\apache-tomcat-7.0.62\solr\db\conf\db-data-config.xml</str>
4         </lst>
5     </requestHandler>

6、配置db-data-config.xml

 1 <dataConfig>
 2     <dataSource type="JdbcDataSource" name="test_solr_db" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/timesheet" user="root" password="root"/>
 3     <document name="info">
 4         <entity name="item" pk="id"  dataSource="test_solr_db" query="select id,name,birthday,addresstt from user">
 5             <field column="id" name="id" />
 6             <field column="name" name="name" />
 7             <field column="birthday" name="birthday" />
 8             <field column="addresstt" name="addresstt" />
 9         </entity>
10     </document>
11 </dataConfig>

  1)、dataSource用于配置连接数据库的信息及方式,每一个dataSource就是一个数据库

  2)、entity用于配置从哪个表中读取数据,每一个entity就是一张表

  3)、一个配置文件也可以配置多个数据库,在配置entity时,为其dataSource属性设置一个数据库连接即可

  4)、如果存在多表连接,则可以使用entity嵌套的方式解决问题

 1         <entity name="item" query="select * from item"
 2                 deltaQuery="select id from item where last_modified > ‘${dataimporter.last_index_time}‘">
 3             <field column="NAME" name="name" />
 4
 5             <entity name="feature"
 6                     query="select DESCRIPTION from FEATURE where ITEM_ID=‘${item.ID}‘"
 7                     deltaQuery="select ITEM_ID from FEATURE where last_modified > ‘${dataimporter.last_index_time}‘"
 8                     parentDeltaQuery="select ID from item where ID=${feature.ITEM_ID}">
 9                 <field name="features" column="DESCRIPTION" />
10             </entity>
11
12             <entity name="item_category"
13                     query="select CATEGORY_ID from item_category where ITEM_ID=‘${item.ID}‘"
14                     deltaQuery="select ITEM_ID, CATEGORY_ID from item_category where last_modified > ‘${dataimporter.last_index_time}‘"
15                     parentDeltaQuery="select ID from item where ID=${item_category.ITEM_ID}">
16                 <entity name="category"
17                         query="select DESCRIPTION from category where ID = ‘${item_category.CATEGORY_ID}‘"
18                         deltaQuery="select ID from category where last_modified > ‘${dataimporter.last_index_time}‘"
19                         parentDeltaQuery="select ITEM_ID, CATEGORY_ID from item_category where CATEGORY_ID=${category.ID}">
20                     <field column="DESCRIPTION" name="cat" />
21                 </entity>
22             </entity>
23         </entity>

这个链接也是有限制的:
           子Entity的query必须引用父Entity的pk
           子Entity的parentDeltaQuery必须引用自己的pk
           子Entity的parentDeltaQuery必须返回父Entity的pk
           deltaImportQuery引用的必须是自己的pk

7、配置完成db-data-config.xml后,如果我们想把查询出来的这些数据都存储到solr中,就需要在schema.xml中配置了,schema.xml与db-data-config.xml是同一目录

1     <field name="id" type="string" indexed="true" stored="true" required="true"  multiValued="false" />
2     <field name="name" type="string" indexed="true" stored="true" required="true" multiValued="false" />
3     <field name="birthday" type="date" indexed="true" stored="true" required="true" multiValued="false" />
4     <field name="addresstt" type="string" indexed="true" stored="true" required="true" multiValued="false" />

因为在schema.xml中有solr给出的一些配置例子可能会跟我们自己配置的<field>结点发生冲突,可以将schema.xml文件中默认的<field>、<dynamicField>、<copyField>都注释掉

到此配置结束

8、测试

  1)、浏览器方式:

  终止跑索引                  http://localhost:8080/solr/db/dataimport?command=abort

开始索引                     http://localhost:8080/solr/db/dataimport?command=full-import

增量索引                     http://localhost:8080/solr/db/dataimport?command=delta-import

  2)、图形化方式

时间: 2024-08-10 21:28:10

solr5.2.1连接数据库的相关文章

2017年9月3日 Spring及Mybatis中连接数据库的不同方式

连接数据库用spring和mybatis中使用的方法可以不同,mybaits可以不用写数据库的配置文件 Spring的连接方法 <!-- 读取属性文件(.properties)的内容 --> <!-- location:指定要读取的属性文件的位置及文件名. 注: classpath:表示依据类路径去查找 容器依据路径读取属性文件的内容, 并且将这些内容存放到Properties对象上 --> //数据库的登入数据文件 //文件名db.properties #db connectio

详解JDBC连接数据库

一.概念 1. 为了能让程序操作数据库,对数据库中的表进行操作,每一种数据库都会提供一套连接和操作该数据库的驱动,而且每种数据库的驱动都各不相同,例如mysql数据库使用mysql驱动,oracle数据库使用oracle驱动,这样假如我们编写的程序哪一天想要换数据库,那样就会很不方便,因为所有连接数据库的代码都要从新编写.SUN公司为了简化.统一对数据库的操作,定义了一套java操作数据库的标准或者规范,这个规范就是JDBC. 2.JDBC全称为:Java Data Base Connectiv

Eclipse通过jdbc连接数据库制作简单登陆界面

一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了,HTML/CSS+JS可以实现对界面的描绘渲染,而JAVA则可以做后台数据处理,XML也是可以当作传输数据的介质(思考:XML比HTML强大这么多,为什么它没能替代HTML?): 这篇文章通过简单的JSP文件实现登陆界面,所以只用到了以下技术: HTML/CSS,简单演示就不做CSS样式了,可自行学

hibernate连接数据库和反向工程

一.JSP界面连接数据库: 导包:将11个包倒进web-inf的lib目录下: 二.建立hibernate.cfg.xml的配置文件:!注意:是放到项目SRC目录下: 三.将视图切换到java下,在左上角项目中选"其他"选出:hibernate.console.configuration 进项配置: 四.配置反射文件:hibernate.reveng.xml !注意:是放到项目SRC目录下: 五.配置和生成实体类和反射文件: 完成!洗不洗 很简单

【转】Java开发中JDBC连接数据库代码和步骤总结

(转自:http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html) JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("co

关于JavaEE项目连接数据库提示 Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)的解决方案

最近这三天,都在解决如下的问题:我MyEclipse中的JavaEE工程,运行之后就提示Access denied for user 'root'@'localhost' (using password: YES),当我用一个Java文件连接MySQL数据库时,没有任何问题.于是我在网上找了一些解决方案: (1)让root给当前用户授予增删改查的权限:grant select,insert,update,delete on *.* to 用户名@"%" Identified by &q

关于在VS平台下连接数据库mdf文件的问题解决

问题征兆1:当你的机器上已经安装了SQL2008和VS2010后,在VS上连接数据库源文件时,它总是提示你一个错误:缺少数据库组件,无法成功连接,需要你重新安装SQLexpress: 问题征兆2:直接上图吧 当你试图对这个数据库进行刷新时,它给你弹出一个错误提示框,示例如下: 问题征兆3:当你试图通过工具选项中的连接数据库操作来连接数据库源文件时它提示你这样的错误消息,示例如下: 经历了上述种种错误的打击后你是否依然寻找着新的解决方案呢?你是否还是不屈不挠呢,反正我是对自己挺无语的! 解决方案简

动态代理连接数据库

package 动态连接数据库; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.DriverManager; import java.util.LinkedList; public class UtilsDB { public static

C#_连接数据库实现 登录注册界面

//编写登录界面逻辑 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClie