1

是否可以为复制字段值添加前缀?

所以我有不同类型的实体,我想将它们的 id 复制到一个字段中,以便将其用作唯一键。但信息来自数据库,因此不同实体的键可能相同。

我想要做的是将“company_id”复制为“company”+_databaseId,将 entityt_id 复制为“entity”+_databaseId

4

2 回答 2

1

如果您使用 DIH 将数据加载到 Solr,则可以使用ScriptTransformer

<script><![CDATA[
    function addFields(row)    {
        var databaseId = row.get('databaseId');
        row.put(databaseId_'company'+, "value");
        return row;
    } 
]]></script>

并定义一个动态字段:-

<dynamicField name="*_company" type="string" indexed="true" stored="true"/>
于 2012-12-19T17:19:48.070 回答
0

CopyField只是一个命令,用于将一个字段复制到另一个字段。您不能向 copyField 添加前缀。您可以通过使用动态字段来解决您的问题。您可以将字段定义为:

<dynamicField name="*_company" type="string" indexed="true" stored="true"/>
<dynamicField name="*_entity" type="string" indexed="true" stored="true"/>
<field name="database_ids" type="string" indexed="true" stored="true"/>

将 copyFields 定义为:

<copyField source="*_company" dest="database_ids"/>
<copyField source="*_entity" dest="database_ids"/>

当您从公司表中获取项目时,将其索引为company_id_company,当您从实体表中获取项目时,将其索引为entity_id_entity字段。然后所有的 id 将被复制到 database_ids 字段。

于 2012-12-19T15:30:25.903 回答