şöyle ben alanlarla solr içinde LocationIndex
adında bir dizin var:Solr Kompozit Benzersiz anahtar
<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>
Ama şimdi benzersiz anahtar ikisi zaten mevcut kompozit olmalıdır böylece şemayı değiştirmek istiyorum alanları solr_id
ve solr_ver
... şey aşağıdaki gibi:
<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>
Ben şemaya aşağıdaki ekleyerek mümkün olduğunu bulduk arama yaptıktan sonra: (ref: 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>
Yani şema değişti ve nihayet benziyor:
<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>
Ama bir belge eklerken bana hata veriyor:
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
ben vardır şemada değiştirir alamıyorum İstenildiği gibi çalışmak gerekli mi?
Eklediğim bir belgede, solr_ver
ve solr_id
alanlarını içerir. Hem bu alanı hem de solr_ver-solr_id
gibi bir şey birleştirerek nasıl (solr) id
alan yaratırsınız?
DÜZENLEME: Bu zincirdeki bakın nasıl verdi
this link anda. Bu şemada nasıl kullanılacağını anlayamıyorum? Ve nerede değişiklik yapmalıyım?
Eğer db-data.config dosyasını gönderebilir – Nipun