solr mysql 多表_Solr数据库连接之多表关联

本文详细介绍了如何配置Solr以连接数据库并导入数据,包括在solrconfig.xml中添加数据配置,创建data-config.xml文件来定义数据库连接、实体、字段和增量更新查询。此外,还提到了性能考虑和schema.xml的配置,并提醒了添加相关jar包的步骤。通过这个指南,读者可以学会如何将数据库中的数据有效地同步到Solr索引中。
摘要由CSDN通过智能技术生成

Solr环境配置好后,有很多时候我们需要把数据库里的数据添加到索引里,这时就需要配置跟数据库的连接,下面我们看配置的步骤。

1. 配置 solrconfig.xml  (在slor 主目录 core conf下面 我的地址 :D:\SolrHome\collection1\conf\solrconfig.xml )

在根目录下加入如下配置,其中 data-config.xml 是我们要配置的数据库连接文件路径。

D:\SolrHome\Question-Hight\conf\data-config.xml

2. 创建 data-config.xml 文件

'${dataimporter.last_index_time}'">

dataSource 节点 配置数据库 连接字符串http://i.cnblogs.com/EditPosts.aspx?opt=1

entity 节点即Solr中对应的实体 其中属性

transformer:转换器

pk :使用的主键

query : 是获取全部数据的SQL  相当于在solr dataimport 页面执行 full-imoport操作时调用的语句 我这里只需要 启用的数据所以加了条件 where IsEnabled=1

deltaImportQuery: 获取增量数据时使用的SQL 语句 指定要获取哪些列 注意后面的条件  where id='${dih.delta.id}' 这里的 ${dih.delta.id} 是内置变量 它的值跟下面的属性关系密切 它是 deltaQuery 里符合条件的ID

deltaQuery :增量更新时获取PK的SQL语句,${dataimporter.last_index_time}  的值是solr 最后创建索引时间,增量更新是根据这个时间跟数据库更新时间进行对比,选择数据库更新时间在solr更新时间之后的进行更新。

deletedPkQuery : 在某些情况下,可能删除数据并不是物理删除,而只是改变数据库某个值,做个标记,在数据库做了删除标记后,记录还是存在的。这时我们是不需要这些数据进入索引的,

那么我们可以通过这个语句对做过删除标记的索引删除(增量更新时起作用)。

注意:这个要小心性能问题,它会针对每个 deltaQuery 查询语句里的 id 循环判断 是否在已删除列表里,所以,如果已删除的列表有 200 个

已更新的 ID列表有 10000 个,那么 要进行 200 * 10000 次循环。

field 节点是对应的数据库中的列  其中 column 属性 查询语句中对应的列名, name 属性 solr实体首页的列名。

如果有表关联就出现了下面的配置

这里 subject 是 site_HighSchoolQuestion 表的关联表,我这里要用到它的 SubjectCode 列,所以在它里面配置了 SubjectCode的 field 节点。

entity 节点 name 节点同上,给这个实体取个名字,方便下面引用。

query : 查询语句这里的条件是 id = Question 的 SubjectInfo的值。

deltaQuery: 增量更新时获取PK的SQL语句 同上

parentDEltaQuery: 获取父实体对象PK的语句 如果 Subject 更新了会通知  Question 更新,而更新就是通过PK值进行的,注意我这里的条件 where SubjectInfo ='$(Subject.id)' 因为我这里两张表是通过 SubjectInfo关联的

这里有2点要注意的:

1. 子entiyt 必须要设置 PK 不然的话是没法更新的

2. 性能问题, 这里如果 deltaQuery 语句查出的是 10000 条记录   parentDeltaQuery 语句就要执行 10000次 。

3. 如果还不能更新请检查你的 SQL 语句

下面就要配置  同目录下的 schema.xml 了。这里是简化的

Id

Title

配置就做好了,别忘了添加连接数据库的 jar 包,下载后复制到部署目录下

以我自己的为例: D:\apachetomcat\apache-tomcat-7.0.59\webapps\solr\WEB-INF\lib

同时还需要 solr安装目录里面 D:\solr-4.10.4\dist 下 solr-dataimporthandler-4.10.4.jar 、solr-dataimporthandler-extras-4.10.4.jar 这两个jar包一起拷过去。

试试,是不是可以跑索引了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值