首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有前缀的SOLR copyfield

带有前缀的SOLR copyfield
EN

Stack Overflow用户
提问于 2012-12-19 22:44:07
回答 2查看 393关注 0票数 1

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-20 01:19:48

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

代码语言:javascript
复制
<script><![CDATA[
    function addFields(row)    {
        var databaseId = row.get('databaseId');
        row.put(databaseId_'company'+, "value");
        return row;
    } 
]]></script>

并定义一个动态字段:

代码语言:javascript
复制
<dynamicField name="*_company" type="string" indexed="true" stored="true"/>
票数 1
EN

Stack Overflow用户

发布于 2012-12-19 23:30:26

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

代码语言:javascript
复制
<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定义为:

代码语言:javascript
复制
<copyField source="*_company" dest="database_ids"/>
<copyField source="*_entity" dest="database_ids"/>

当您从company表中获取项目时,将其作为company_id_company字段进行索引;当您从实体表中获取项目时,将其作为entity_id_entity字段进行索引。然后,所有ids都将被复制到database_ids字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13954778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档