다음과 같이 나는 필드 SOLR에 LocationIndex
라는 인덱스가 있습니다SOLR 복합 고유 키
<fields>
<field name="solr_id" type="string" stored="true" required="true" indexed="true"/>
<field name="solr_ver" type="string" stored="true" required="true" indexed="true" default="0000"/>
// and some more fields
</fields>
<uniqueKey>solr_id</uniqueKey>
하지만 지금은 고유 키가이 이미 존재하는 복합 있어야합니다 수 있도록 스키마를 변경하려면 필드 solr_id
및 solr_ver
... 뭔가를 다음과 같이
<fields>
<field name="solr_id" type="string" stored="true" required="true" indexed="true"/>
<field name="solr_ver" type="string" stored="true" required="true" indexed="true" default="0000"/>
<field name="composite-id" type="string" stored="true" required="true" indexed="true"/>
// and some more fields
</fields>
<uniqueKey>solr_ver-solr_id</uniqueKey>
을 내가 스키마에 다음을 추가하여 가능 발견 검색 한 후 : (참조 : Solr Composite Unique key from existing fields in schema)
<updateRequestProcessorChain name="composite-id">
<processor class="solr.CloneFieldUpdateProcessorFactory">
<str name="source">docid_s</str>
<str name="source">userid_s</str>
<str name="dest">id</str>
</processor>
<processor class="solr.ConcatFieldUpdateProcessorFactory">
<str name="fieldName">id</str>
<str name="delimiter">--</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
그래서 내가 스키마를 변경하고 마침내는 다음과 같습니다
<updateRequestProcessorChain name="composite-id">
<processor class="solr.CloneFieldUpdateProcessorFactory">
<str name="source">solr_ver</str>
<str name="source">solr_id</str>
<str name="dest">id</str>
</processor>
<processor class="solr.ConcatFieldUpdateProcessorFactory">
<str name="fieldName">id</str>
<str name="delimiter">-</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
<fields>
<field name="solr_id" type="string" stored="true" required="true" indexed="true"/>
<field name="solr_ver" type="string" stored="true" required="true" indexed="true" default="0000"/>
<field name="id" type="string" stored="true" required="true" indexed="true"/>
// and some more fields
</fields>
<uniqueKey>id</uniqueKey>
그러나 문서를 추가하는 동안 그것은 나에게 오류주고 :
org.apache.solr.client.solrj.SolrServerException: Server at http://localhost:8983/solr/LocationIndex returned non ok status:400, message:Document [null] missing required field: id
을 I는 스키마에 어떤 변화받지 못했습니다 원하는대로 일해야합니까?
문서에 추가 할 내용은 solr_ver
및 solr_id
입니다. 어떻게 그리고 어디에서 (solr) solr_ver-solr_id
과 같은 두 가지 필드를 결합하여 id
필드를 만들까요?
편집 :이 체인을 참조하는 방법을 주어진 것
this link에서. 부 스키마에서 어떻게 사용되는지 이해할 수 없습니까? 그리고 나는 어디에서 변경해야합니까?
당신이 당신의 DB-data.config 파일을 게시 할 수 있습니다 – Nipun