gpt4 book ai didi

sql - SOLR DataImportHandler,如何将嵌套实体视为 JSON 数组

转载 作者:行者123 更新时间:2023-12-04 22:41:40 24 4
gpt4 key购买 nike

我正在为 SOLR 和 SQL 数据导入而苦恼。我需要索引来自 2 个表的数据,第一个是“masters”,第二个是“details”。这两个表之间的关系是 1 对 n 的,它由两个表上的列 m_id 强制执行:

CREATE TABLE "masters" (m_id             NUMBER(10), 
m_code VARCHAR2(100 CHAR),
m_description VARCHAR2(1000 CHAR),
PRIMARY KEY (m_id));

CREATE TABLE "details" (d_id NUMBER(10),
s_code VARCHAR2(100 CHAR),
s_description VARCHAR2(1000 CHAR),
m_id NUMBER(10),
PRIMARY KEY (d_id),
CONSTRAINT fk_details_masters FOREIGN KEY (m_id) REFERENCES "masters"(m_id));

我想为“masters”表中的每一行创建一个索引文档,每个文档都应包含“details”表的数组。

我在脑海中预想的结果是这样的:

master = {
"ID": "1"
"m_code": "master53",
"m_description": "John Doe",
"details": [
{
"d_code": "detail001",
"d_description": "Shirts"
},
{
"d_code": "detail002",
"d_description": "Shoes"
},
{
"d_code": "detail003",
"d_description": "hats"
}
]
}

但我只能产生这样的东西:

master = {
"ID": "1",
"m_code": "master53",
"m_description": "John Doe",
"d_code": ["detail001","detail002","detail003"],
"d_description": ["Shirts","Shoes","hats"]
}

使用这样的配置:

<dataConfig>
<dataSource type="JdbcDataSource"
driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@//dora64svil.icc.crifnet.com:1521/cbrisvil.dbcrif.net"
user="CBBTC"
password="w4.gJ6Qf1p7Z_i4qFp3W_d"/>
<document>
<entity name="master" rootEntity="True"
query="SELECT m_id, m_code, m_description from master">
<field column="m_id" name="ID"/>
<field column="m_code" name="m_code_s"/>
<field column="m_description" name="m_description_s"/>
<entity name="details" rootEntity="False"
query="SELECT d_code, d_description from details where = m_id '${master.m_id}'">
<field column="d_code" name="d_code_ss"/>
<field column="d_description" name="d_description_ss"/>
</entity>
</entity>
</document>
</dataConfig>

我在配置和 schema.xml 字段定义方面玩了很多,但我无法找到正确的方法。(字段后缀“_s”和“_ss”的存在只是为了将正确的字段类型触发到模式中)

我想我正在尝试做的是给嵌套实体一个“名字”,错误在哪里?我试图做的事情在概念上是错误的吗?

最佳答案

您必须在 schema.xml 中将字段设置为 multiValued=true

关于sql - SOLR DataImportHandler,如何将嵌套实体视为 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20144325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com