SOLR と SQL データのインポートに苦労しています。最初のテーブルは「マスター」、2 番目のテーブルは「詳細」の 2 つのテーブルからのデータにインデックスを付ける必要があります。これら 2 つのテーブル間の関係は 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」テーブルに存在する行ごとに 1 つのインデックス付きドキュメントが必要です。すべてのドキュメントには「details」テーブルの ARRAY が含まれている必要があります。
私が頭の中で予見した結果は、次のようなものです。
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」は、適切なフィールド タイプをスキーマにトリガーするためだけに存在します)
私がやろうとしているのは、ネストされたエンティティに「名前」を付けることだと思いますが、エラーはどこにありますか? 私がやろうとしていることは概念的に間違っていますか?