0

我在 Ubuntu 上使用 Solr 4.0 DIH(JDBC 连接器)。我正在尝试使以下 MySQL JOIN 查询与 Solr 一起工作Delta-import

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的别名。usergroup

以下是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 &gt; '${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-importDelta-import不工作(增量导入后我没有得到任何结果)。自从我试图完成这项工作以来已经快一个月了,但做不到。

有什么帮助吗?请!

4

1 回答 1

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 &gt; '${dih.last_index_time}'" />

完成完全导入后,请检查文件 dataimport.properties。完全导入完成后,请确保customer表中的某些文档last_modified的时间大于在 dataimport.properties 中找到的时间,以便增量有一些数据可以运行。然后尝试 delta import 并查看这些文档是否被重新索引。您可以通过查看 delta 导入来了解有多少被索引http://HOST:PORT/solr/CORE/dataimport

于 2013-02-17T04:53:42.223 回答