带有数据导入处理程序的

时间:2015-08-02 23:58:51

标签: mysql search solr lucene

我使用Solr的DIH从MySQL数据库导入数据。我的data-config定义为:

<document>
    <entity name="PARENT" query="SELECT * FROM PARENT">
        <field name="id" column="id" />
        <entity name="CHILD" child="true" query="SELECT * FROM CHILD WHERE id = ${PARENT.id}">
            <field name="id" column="id" />
            <field name="field1" column="field2" />
            <field name="field1" column="field2" />
        </entity>
    </entity>
</document>

我必须在子文档中包含一个id字段,在schema.xml中包含一个 root 字段。但是导入的文档不像

{
    id:1
    {
        field1:
        field2:
        field3:
    }
},
{
    id:2
    {
        field1:
        field2:
        field3:
    }
}

,但是喜欢

{
    id:1
    field1:
    root:1
},
{
    id:1
    field2:
    root:1
},
{
    id:1
    field3:
    root:1
},

这是预期的结果吗?任何人都可以告诉我使用DIH从MySQL导入嵌套实体的正确配置是什么?

1 个答案:

答案 0 :(得分:0)

要提两点:

  1. 根据文档here

    请注意,'entity'元素可以嵌套,这允许实体  要在这里镜像的示例数据库中的关系,以便我们可以  生成非规范化的Solr记录,其中可能包含多个特征  对于一个项目

    因此即使xml中的实体结构与父子一样,它也表示solr在内部存储为非规范化。这就是这里发生的事情

  2. 你是否正在接受孩子的身份?我可以看到,根在所有子文档中重复,这是预期的,但id(假设它是子id)也是相同的,这是奇怪的。你能证实吗。

  3. 在使用嵌套概念在solr中添加文档时,您总是得到1 + n个文档,其中1是父文档,n是子文档