是否可以在copyfield值中添加前缀?
所以我有不同类型的实体,我想将它们的id复制到一个字段,以便将其用作唯一键。但是信息来自数据库,因此不同实体的密钥可能相同。
我想要做的是将“company_id”复制为“”company“+ _ databaseId”,将entityt_id复制为“”entity“+ _ databaseId”
答案 0 :(得分: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"/>
答案 1 :(得分: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 表中获取它时,将其索引为entity_id_entity
字段。然后将所有ID复制到database_ids字段。