带有数据导入处理程序的 Solr 子文档
Solr child document with data import handler
我使用 Solr 的 DIH 从 MySQL 数据库导入数据。我的数据配置定义为:
<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 导入嵌套实体的正确配置是什么?
提两点:
根据文档 here、
请注意,'entity' 元素可以嵌套,这允许实体
示例数据库中的关系将在此处进行镜像,以便我们可以
生成可能包含多个功能的非规范化 Solr 记录
一件商品
所以即使 xml 中实体的结构类似于 parent-child,它表示 solr 在内部存储为非规范化。这就是帽子发生在这里
你是在单独获取 child 的 ID 吗?我可以看到,根在所有 child 文档中重复,这是预期的,但 id(假设它是 child id)也是相同的,这很奇怪。你能证实一下吗?
在solr中添加文档时,使用嵌套的概念,总是得到1+n个文档,其中1是parent,n是children
我使用 Solr 的 DIH 从 MySQL 数据库导入数据。我的数据配置定义为:
<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 导入嵌套实体的正确配置是什么?
提两点:
根据文档 here、
请注意,'entity' 元素可以嵌套,这允许实体 示例数据库中的关系将在此处进行镜像,以便我们可以 生成可能包含多个功能的非规范化 Solr 记录 一件商品
所以即使 xml 中实体的结构类似于 parent-child,它表示 solr 在内部存储为非规范化。这就是帽子发生在这里
你是在单独获取 child 的 ID 吗?我可以看到,根在所有 child 文档中重复,这是预期的,但 id(假设它是 child id)也是相同的,这很奇怪。你能证实一下吗?
在solr中添加文档时,使用嵌套的概念,总是得到1+n个文档,其中1是parent,n是children