Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene Solr-DIH动态文件名和;转换值_Lucene_Solr_Dih - Fatal编程技术网

Lucene Solr-DIH动态文件名和;转换值

Lucene Solr-DIH动态文件名和;转换值,lucene,solr,dih,Lucene,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

我有一个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

有人知道怎么做吗?

我想我可以使用DIHCustomTransformer来调用函数,但我还不确定


任何启示都将不胜感激

不确定您是否有答案,但我的理解是您需要在data handler文档中创建多个实体选项卡,每个新的多值字段对应一个选项卡,并指示根文档中的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,DateFormatTransformer,TemplateTransformer">
        <field column = "features" />

    </entity>
    </entity>
</document>


谢谢adolfo,我的确在我的DIH配置中创建了多个实体,但我需要在子实体过程中执行额外的过程