copyfield 값에 접두사를 추가 할 수 있습니까?접두사가있는 SOLR copyfield
그래서 다른 유형의 엔티티가 있습니다.이 필드를 고유 키로 사용하기 위해 ID를 필드에 복사하고 싶습니다. 그러나 정보는 데이터베이스에서 가져 오므로 키가 다른 엔터티에 대해 동일 할 수 있습니다.
내가 뭘 원하는
copyfield 값에 접두사를 추가 할 수 있습니까?접두사가있는 SOLR copyfield
그래서 다른 유형의 엔티티가 있습니다.이 필드를 고유 키로 사용하기 위해 ID를 필드에 복사하고 싶습니다. 그러나 정보는 데이터베이스에서 가져 오므로 키가 다른 엔터티에 대해 동일 할 수 있습니다.
내가 뭘 원하는
, 당신은 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"/>
단지 명령에 사용되는 '+ _ 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에 데이터를로드하는 다이 하이드로을 사용하는 경우
하지만 COMPANY_ID가 '1'이 될 수 entity_id는 '1'이므로 중복 될 수 있습니다. 그래서 접두어 – Nealv
을 추가해야합니다. 왜 회사와 엔티티에 대해 서로 다른 두 개의 동적 필드를 정의합니까? 위에서 정의한 dynamicFields를 사용하여 회사를 1_company 및 entity로 1_entity로 색인화합니다. 접두사 대신 i는 ID 사이에 차이점을 만들기 위해 여기 접미사를 사용했습니다. –
* _company는 "something_company"라는 이름을 가진 모든 필드를 포함 할 것이라고 생각했습니다. – Nealv