2012-12-19 2 views
1

copyfield 값에 접두사를 추가 할 수 있습니까?접두사가있는 SOLR copyfield

그래서 다른 유형의 엔티티가 있습니다.이 필드를 고유 키로 사용하기 위해 ID를 필드에 복사하고 싶습니다. 그러나 정보는 데이터베이스에서 가져 오므로 키가 다른 엔터티에 대해 동일 할 수 있습니다.

내가 뭘 원하는

답변

1

, 당신은 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"/> 
0

CopyField

단지 명령에 사용되는 '+ _ databaseId "회사"' '+ _ databaseId "엔티티"'로하고 entityt_id으로 "COMPANY_ID을"복사입니다 한 필드를 다른 필드로 복사하십시오. 접두사를 copyField에 추가 할 수 없습니다. 동적 필드를 사용하여 문제를 해결할 수 있습니다. 로 copyFields 정의

<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"/> 

: 당신은 필드를 정의 할 수 있습니다

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

당신이 기업에서 그것을 얻을 때 company_id_company 및 로 기업 테이블, 인덱스 그것에서 항목을 얻을 때 테이블 인덱스는 entity_id_entity 필드입니다. 그런 다음 모든 ID가 database_ids 필드에 복사됩니다. 당신이 SOLR에 데이터를로드하는 다이 하이드로을 사용하는 경우

+0

하지만 COMPANY_ID가 '1'이 될 수 entity_id는 '1'이므로 중복 될 수 있습니다. 그래서 접두어 – Nealv

+0

을 추가해야합니다. 왜 회사와 엔티티에 대해 서로 다른 두 개의 동적 필드를 정의합니까? 위에서 정의한 dynamicFields를 사용하여 회사를 1_company 및 entity로 1_entity로 색인화합니다. 접두사 대신 i는 ID 사이에 차이점을 만들기 위해 여기 접미사를 사용했습니다. –

+0

* _company는 "something_company"라는 이름을 가진 모든 필드를 포함 할 것이라고 생각했습니다. – Nealv

관련 문제