我在Ubuntu上使用Solr 4.0 DIH(JDBC连接器)。我正在尝试使用Delta-import
上的Solr进行以下MySQL JOIN查询:
select c.*,u.*,g.* from user u inner join group g on u.bus_grp_id = g.dt_grp_id inner join customer c on c.id = g.dt_id
这里c,u,g分别是表customer
,user
和group
的别名。
以下是完整和delta导入的data-config.xml
文件:
<entity name="cust" pk="id" query="select c.*,u.*,g.* from user u inner join group g on u.bus_grp_id = g.dt_grp_id inner join customer c on c.id = g.dt_id"
deltaImportQuery="select c.*,u.*,g.* from user u inner join group g on u.bus_grp_id = g.dt_grp_id inner join customer c on c.id = g.dt_id where c.id='${dih.delta.c.id}'"
deltaQuery="select id from customer where last_modified > '${dih.last_index_time}'">
<entity name="grp" pk="dt_id"
query="select * from group where dt_id='${cust.c.id}'"
deltaQuery="select dt_id from group where last_modified > '${dih.last_index_time}'"
parentDeltaQuery="select id from customer where id=${grp.dt_id}" >
<entity name="usr" pk="bus_grp_id"
query="select * from user"
deltaQuery="select bus_grp_id from user where last_modified > '${dih.last_index_time}'"
parentDeltaQuery="select dt_grp_id from group where dt_grp_id=${usr.bus_grp_id}" >
</entity>
</entity>
</entity>
full-import
没问题,但Delta-import
无效(delta导入后我没有得到任何结果)。自从我试图完成这项工作以来已经差不多一个月了,但却没有。
有任何帮助吗?请!
答案 0 :(得分:0)
如果您的主要实体元素中的查询是
select c.*,u.*,g.* from user u
inner join group g on u.bus_grp_id = g.dt_grp_id
inner join customer c on c.id = g.dt_id
为您提供在Solr中索引所需的所有字段,我认为您不需要其他两个子实体。另外我猜你的deltaImportQuery中有一个拼写错误。您应该使用dih.delta.id
而不是dih.delta.c.id
。
我想如果你保留这个,它应该可以正常工作:
<entity
name="cust"
pk="id"
query="select c.*,u.*,g.* from user u
inner join group g on u.bus_grp_id = g.dt_grp_id
inner join customer c on c.id = g.dt_id"
deltaImportQuery="select c.*,u.*,g.* from user u
inner join group g on u.bus_grp_id = g.dt_grp_id
inner join customer c on c.id = g.dt_id
where c.id='${dih.delta.id}'"
deltaQuery="select id from customer
where last_modified > '${dih.last_index_time}'" />
完成全部导入后,请检查文件dataimport.properties。完全导入完成后,请确保customer
表中的某些文档的last_modified
大于您在dataimport.properties中找到的时间,因此delta有一些数据要运行。然后尝试增量导入,看看这些文档是否重新编入索引。通过查看http://HOST:PORT/solr/CORE/dataimport