Solr DIH动态文件名和转换值

问题描述

| 我有一个与DIH一起工作的Solr,现在我需要添加多行与Solr索引文档为一对多的关系
TABLE:
ID:int PK
post_id:int FK
name:string
value:text
type:(int|string)
我需要将基于FK(post_id)的所有行插入具有动态名称的solr文档中,并根据类型转换值
SELECT name,value,type FROM TABLE WHERE post_id=\'${post_entity.id}\';

loop
insert into solr fieldname: Meta_{$name} value: if type int cast to int else just value
end loop
有人知道该怎么做吗?     

解决方法

        不确定您是否已经找到答案,但是我的理解是,您需要在数据处理程序文档中创建多个实体标签,为要添加的每个新多值字段创建一个标签,并指出根文档中的ID。看这个例子: 在DataHandler.xml文件中:
<dataConfig>
<dataSource name=\"jdbc\" driver=\"org.postgresql.Driver\" url=\"jdbc:postgresql://localhost/bedrock\" user=\"postgres\" password=\"test\" batchSize=\"1000\" readOnly=\"true\" autoCommit=\"false\" transactionIsolation=\"TRANSACTION_READ_COMMITTED\" holdability=\"CLOSE_CURSORS_AT_COMMIT\" />
<document name=\"doc-a\">
    <entity name=\"employee-root\" datasource=\"jdbc\" pk=\"id\" query =\"
        select
            a.id as id,a.name as name,a.dept as dept,a.jobtitle as jobtitle,a.last_change as last_change
        from employee a
        \"
    transformer=\"RegexTransformer,DateFormatTransformer,TemplateTransformer\">
        <field column = \"id\" />
        <field column = \"name\" />
        <field column = \"dept\" />
        <field column = \"jobtitle\" />
    <entity name=\"employee-hobby\" datasource=\"jdbc\" query =\"
        select
            employee_hobby as features
            from employee_hobby 
            where employee_id = ${employee-root.id}
        \"
        transformer=\"RegexTransformer,TemplateTransformer\">
        <field column = \"features\" />

    </entity>
    </entity>
</document>
    ,        我想我可以使用DIHCustomTransformer来调用一个函数,但我不确定 http://wiki.apache.org/solr/DIHCustomTransformer 任何启发将不胜感激